每日一算法

问题

等待登机的你看着眼前有老有小长长的队伍十分无聊,你突然 想要知道,是否存在两个年龄相仿的乘客。每个乘客的年龄用 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();
    }
}
相关推荐
8Qi82 小时前
回文子串(Palindromic Substrings)—— 题解
算法·leetcode·职场和发展·动态规划
小宋加油啊7 小时前
机械臂抓取物体 PVN3D算法调研学习
学习·算法·3d
lqqjuly7 小时前
前沿算法深度解析(一)
算法
小欣加油7 小时前
leetcode1926 迷宫中离入口最近的出口
数据结构·c++·算法·leetcode·职场和发展
happymaker062610 小时前
LeetCodeHot100——42.接雨水
算法
阿正的梦工坊10 小时前
【Rust】07-错误处理:Option、Result 与 ? 运算符
开发语言·算法·rust
八解毒剂12 小时前
数据结构-平衡二叉树——对二叉搜索树的优化
数据结构·c++·算法
运行时记录12 小时前
别再手动写提示词了 — SkillOpt 让技能文档自己进化
算法
啦啦啦啦啦zzzz12 小时前
算法总结(二分查找、双指针)
c++·算法