思路:

  1. 首先根据输入的n和排列元素a构建一个长度为n的列表b,列表b的下标代表元素的值,列表b的值代表元素的下标+1。
  2. 然后根据输入的x和y在列表b中找到对应的下标,判断它们是否相邻。
  3. 如果相邻,则输出"Yes",否则输出"No"。

代码如下:

n = int(input())
a = list(map(int, input().split()))
x, y = map(int, input().split())

b = [0] * n
for i in range(n):
    b[a[i]-1] = i+1

if abs(b[x-1]-b[y-1]) == 1:
    print("Yes")
else:
    print("No")

时间复杂度分析: 构建列表b的时间复杂度为O(n),判断x和y是否相邻的时间复杂度为O(1)。因此总的时间复杂度为O(n)。

小美拿到了一个排列。她想知道在这个排列中t和y是否是相邻的。你能帮帮她吗排列是指一个长度为n的数组其中1到n每个元素恰好出现-次。输入描述第一行输入一个正整数n代表排列的长度第二行输入n个正整数a代表排列的元素第三行输入两个正整数2和Y用空格隔开1 n 200000I aixy n保证x y输出描述如果x和y在排列中相邻则输出Yes。否则输出No

原文地址: https://www.cveoy.top/t/topic/iBnh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录