gpt4 book ai didi

java - 反向比较回文解(破解编码面试)

转载 作者:行者123 更新时间:2023-11-30 06:58:18 28 4
gpt4 key购买 nike

所以我正在阅读《破解编码面试》一书。我正在解决这个问题:

“实现一个函数来检查链表是否是回文”

我注意到第一个解决方案(第 217 页)仅提供一个节点作为函数的参数,而不是整个列表。我只是想知道,在没有提供列表的情况下,函数如何知道列表中的下一个节点?

我提供了下面的代码,以防万一。

boolean isPalindrome(LinkedListNode head){
LinkedListNode reversed = reverseAndClone(head);
return isEqual(head, reversed);
}
LinkedListNode reverseAndClone(LinkedListNode node){
LinkedListNode head = null;
while(node != null){
LinkedListNode n = new LinkedListNode(node.data);
n.next = head;
head = n;
node = node.next;
}
return head;
}

boolean isEqual(LinkedListNode one, LinkedListNode two) {
while(one != null && two != null){
if (one.data != two.data){
return false;
}
one = one.next;
two = two.next;
}
return one == null && two == null;
}

最佳答案

在链表中,每个节点都保存自己的数据和对列表中下一个节点的引用(在双向链表中也可能对前一项进行引用,但这里的情况似乎并非如此) 。因此,您实际上并不需要列表包装​​器来获取其所有数据,只需对第一个节点(头)的引用,如您包含的代码片段所示。

关于java - 反向比较回文解(破解编码面试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400220/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com