题目
小C拿到了一个排列,她想知道在这个排列中,元素 x 和 y 是否是相邻的。排列是一个长度为 n 的数组,其中每个数字从 11 到 n 恰好出现一次。
你的任务是判断在给定的排列中,x 和 y 是否是相邻的。
解答
我们可以根据给定的排列 a 来判断元素 x 和 y 是否是相邻的。首先,我们需要找到 x 和 y 在数组中的位置,然后检查它们是否相邻。
步骤:
- 找到
x和y的位置:在数组a中找到x和y的索引位置。 - 检查相邻:如果
x和y的索引差的绝对值为 1,那么它们是相邻的。
代码实现:
def solution(n: int, a: list, x: int, y: int) -> bool:
# 找到 x 和 y 在数组中的索引位置
index_x = a.index(x)
index_y = a.index(y)
# 判断它们是否相邻
return abs(index_x - index_y) == 1
if __name__ == '__main__':
print(solution(4, [1, 4, 2, 3], 2, 4) == True)
print(solution(5, [3, 4, 5, 1, 2], 3, 2) == False)
print(solution(6, [6, 1, 5, 2, 4, 3], 5, 2) == True)
解释:
a.index(x)和a.index(y):通过index方法获取元素x和y在列表a中的索引位置。abs(index_x - index_y) == 1:判断两个元素的索引差是否为 1。如果是,说明它们是相邻的。
测试样例:
- 输入
n = 4, a = [1, 4, 2, 3], x = 2, y = 4,输出True,因为 2 和 4 是相邻的。 - 输入
n = 5, a = [3, 4, 5, 1, 2], x = 3, y = 2,输出False,因为 3 和 2 不是相邻的。 - 输入
n = 6, a = [6, 1, 5, 2, 4, 3], x = 5, y = 2,输出True,因为 5 和 2 是相邻的。
这样就完成了代码补充,可以正确判断元素 x 和 y 是否相邻。