每日一算法

问题

等待登机的你看着眼前有老有小长长的队伍十分无聊,你突然 想要知道,是否存在两个年龄相仿的乘客。每个乘客的年龄用 1个0 到 36500 的整数表示,两个乘客的年龄相差 365 以内 就认为是相仿的。 具体来说,你有一个长度为 n 的数组,每个数组元素都是一 个0~ 36500 的整数。

给出q个二元组l,r,判断数组在区 间l,r上是否存在两个差值小于等于 365 的数,

若存在输出 YES,否则输出 NO。

输入格式 第一行两个整数 n,q,表示乘客数和询问数。 接下来一行 n 个整数,表示乘客的年龄。 接下来q行,每行两个整数 l,r表示查询。

输出格式 q行,每行输出 YES 或者 NO,分别表示区间内存在/不存在 年龄相仿的乘客。题目来蓝桥云

解析

这段代码首先读取乘客数 n 和询问数 q。然后,它读取乘客的年龄数组 ages。接下来,对于每个查询 [l, r],它使用双重循环来查找区间内是否存在两个年龄相仿的乘客。在内部循环中,对于每对乘客年龄,它计算它们的差值是否小于等于 365。如果找到了满足条件的乘客年龄对,就将 found 置为 true,并且在最外层循环中跳出。最后根据 found 的值输出相应的结果 "YES" 或 "NO"。

请确保输入和输出格式与题目描述一致,并注意边界条件的处理,例如数组下标和区间的范围。

代码

java 复制代码
import java.util.Scanner;

public class SimilarAges {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 读取乘客数和询问数
        int n = scanner.nextInt();
        int q = scanner.nextInt();

        // 读取乘客年龄数组
        int[] ages = new int[n];
        for (int i = 0; i < n; i++) {
            ages[i] = scanner.nextInt();
        }

        // 处理每个查询
        for (int i = 0; i < q; i++) {
            // 读取查询的左右边界
            int l = scanner.nextInt();
            int r = scanner.nextInt();

            // 判断是否存在相似年龄的乘客
            boolean found = false;
            // 使用双重循环查找区间内的年龄是否相似
            for (int j = l - 1; j < r; j++) {
                for (int k = j + 1; k < r; k++) {
                    if (Math.abs(ages[j] - ages[k]) <= 365) {
                        found = true;
                        break;
                    }
                }
                if (found) {
                    break;
                }
            }

            // 输出结果
            if (found) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }

        scanner.close();
    }
}
相关推荐
Dream it possible!6 小时前
LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)
算法·leetcode·面试·动态规划
心抵鹊6 小时前
算法之双指针系列(一)
算法·leetcode
十二7 小时前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯
小此方8 小时前
[算法实战论:动态规划]回文串问题的dp解法,回文串问题的母题,以及以此为基础的派生题
算法·动态规划
Pniubi8 小时前
力扣560.和为k的子数组
算法·leetcode·职场和发展
D e re k ZH8 小时前
C++ 从零入门(一):基础语法与程序结构
数据结构·c++·算法
Pniubi9 小时前
力扣438.找到字符串中所有字母异位词
算法·leetcode·职场和发展
東隅已逝,桑榆非晚12 小时前
算法6. 双指针法-查找总价格为目标的两个商品
c++·学习·算法
Eyfcom12 小时前
〖物联网终端实战 01〗UWB 室内高精度定位:仓储 AGV 与人员的厘米级轨迹追踪
物联网·算法·物流系统·快递系统·跨境物流快递系统·物联网终端实战
bro_Java66612 小时前
《排序的底层逻辑:比较、交换与分治》
java·算法·排序算法