首页 > 试题广场 >

小美的排列询问

[编程题]小美的排列询问
  • 热度指数:3397 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小美拿到了一个排列。她想知道在这个排列中,xy是否是相邻的。你能帮帮她吗?

排列是指一个长度为n的数组,其中 1 到n每个元素恰好出现一次。

输入描述:
第一行输入一个正整数n,代表排列的长度。
第二行输入n个正整数a_i,代表排列的元素。
第三行输入两个正整数xy,用空格隔开。
1\leq n \leq 200000
1\leq a_i,x,y \leq n
保证x≠y


输出描述:
如果xy在排列中相邻,则输出"Yes"。否则输出"No"。
示例1

输入

4
1 4 2 3
2 4

输出

Yes
示例2

输入

5
3 4 5 1 2
3 2

输出

No
输入完可以不用for循环
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
       // 注意 hasNext 和 hasNextLine 的区别
       int n = in.nextInt();
       int[] a = new int [n+1];
       for(int i=1;i<n+1;i++)
           a[in.nextInt()] = i;
       int x = in.nextInt();
       int y = in.nextInt();
       if(a[x] - a[y] == 1 || a[y] - a[x] == 1)
           System.out.println("Yes");
       else
           System.out.println("No");
    }
}
发表于 2023-08-23 15:35:55 回复(3)