小美拿到了一个排列。她想知道在这个排列中t和y是否是相邻的。你能帮帮她吗排列是指一个长度为n的数组其中1到n每个元素恰好出现-次。输入描述第一行输入一个正整数n代表排列的长度第二行输入n个正整数a代表排列的元素第三行输入两个正整数2和Y用空格隔开1 n 200000I aixy n保证x y输出描述如果x和y在排列中相邻则输出Yes。否则输出No
思路:
- 首先根据输入的n和排列元素a构建一个长度为n的列表b,列表b的下标代表元素的值,列表b的值代表元素的下标+1。
- 然后根据输入的x和y在列表b中找到对应的下标,判断它们是否相邻。
- 如果相邻,则输出"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)。
原文地址: https://www.cveoy.top/t/topic/iBnh 著作权归作者所有。请勿转载和采集!