Menu
CoddyTech

Palindrome Linked List

你会得到一个单向链表,它存储在两个长度相同的数组中。节点 i 保存值 values[i],并链接到节点 next[i]。-1 表示链表结束,头节点是节点 0。节点并未按链表顺序存储,因此要沿着链接遍历。

如果从头节点到末尾读取的值,与从末尾到头节点读取的值相同,则返回 true;否则返回 false。

函数

isPalindrome(next: integer-array, values: integer-array) → boolean
nextinteger-array
每个节点链接到的节点索引,最后一个节点为 -1
valuesinteger-array
每个节点持有的值
返回值boolean
如果这个列表正着读和反着读都一样

约束条件

  • 1 ≤ L ≤ 5000,其中 L 是 next 和 values 的长度。
  • -100 ≤ values[i] ≤ 100
  • 每个 next[i] 都是 -1,或是从 0 到 L-1 的节点索引。
  • 从节点 0 开始,列表会恰好访问每个节点一次,然后到达 -1。这里没有循环。

示例

输入
next = [4, 3, -1, 2, 1]values = [3, 4, 3, 1, 1]
输出
true
解释
这些链接依次访问节点 0, 4, 1, 3, 2,因此列表内容为 3, 1, 4, 1, 3。两个 3 相同,两个 1 相同,中间的 4 没有需要检查的对应项。
challenge icon

进阶

你能在 O(L) 时间内完成吗?额外内存为 O(1)。

重置代码
def isPalindrome(next, values):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

next = [4, 3, -1, 2, 1]
values = [3, 4, 3, 1, 1]

预期输出

true