【发布时间】:2017-09-10 22:34:29
【问题描述】:
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {boolean}
*/
var isPalindrome = function(head) {
if(head === null){
return true;
}
var current, runner;
current = head;
runner = head;
runner = reverseList(runner);
while(current !== null && runner !== null){
if(current.val != runner.val){
return false;
}
else{
current = current.next;
runner = runner.next;
}
}
return true;
};
这是我的反向函数。这是我认为我遇到最多问题的地方。我遇到了与this post 类似的问题,但我不确定如何解决对象引用问题。
var reverseList = function(head){
var previous, current, next;
current = head;
previous = null;
next = null;
while(current !== null){
next = current.next;
current.next = previous;
previous = current;
current = next;
}
head = previous;
return previous;
}
输入 [1, 3, 4, 5, 1] 返回 true,所以我相信运行 reverse 函数只会返回链表中的单个节点。
感谢任何帮助。
【问题讨论】:
-
我相信运行反向函数只会返回一个节点。您可以自己检查 reversList 是否错误,而不是相信事情。所以,你可以直接要求一个故障的尊敬列表,而不是询问整个算法的错误在哪里。
-
[1, 3, 4, 5, 1]不是链表。您究竟如何调用该函数?你传递给函数的值是什么?
标签: javascript linked-list pass-by-reference palindrome