给定一个数组,判断其中的数据序列是否左右对称:偶数个数时,左右两半部分正好逆序;奇数时,除中间位置数外,左右逆序。 Input Description 第一行N表示一共有N个测试用例,也即接下来的输入数据共有N行。 接下来的每一行表示一个输入数组,第一个数字n表示该数组的元素个数,后面紧跟着n个数,中间都以空格隔开。 Output Description 是逆序输出YES,否则输出NO(注意都是大写,小写判错)
时间: 2024-03-09 18:46:02 浏览: 151
求出栈序列个数
以下是 Python 代码实现:
```python
n = int(input())
for i in range(n):
arr = list(map(int, input().split()))[1:]
if len(arr) % 2 == 0:
left = arr[:len(arr)//2]
right = arr[len(arr)//2:][::-1]
else:
left = arr[:len(arr)//2]
right = arr[len(arr)//2+1:][::-1]
if left == right:
print("YES")
else:
print("NO")
```
解释一下:
首先读入测试用例数量 `n`,然后循环读入每个测试用例。对于每个测试用例,先读入数组元素个数 `n`,然后读入 `n` 个数字,存入列表 `arr` 中。接下来根据数组元素个数的奇偶性,将数组划分为左右两部分,分别保存在 `left` 和 `right` 中。对于偶数个元素的数组,直接将数组一分为二,左边部分是原数组的前一半,右边部分是原数组的后一半的逆序;对于奇数个元素的数组,中间的元素不需要考虑,左边部分是原数组的前一半,右边部分是原数组的后一半的逆序(不包括中间元素)。最后比较左右两部分是否相等,相等则输出 `YES`,否则输出 `NO`。
阅读全文