/**
* 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を返すので、私は逆関数のみリンクされたリスト内の単一のノードを返して実行していると信じています。
何か助けていただければ幸いです。
_単一のノードを返します。物事を信じる代わりに、あなたがreverseListが間違っているかどうかあなた自身でチェックすることができます。だから、アルゴリズム全体のどこにバグがあるかを尋ねるのではなく、誤った名前のリストを直接聞くことができます。 – lilezek
'[1、3、4、5、1]'はリンクリストではありません。どのように正確に関数を呼び出しますか?あなたはどのような価値を関数に渡していますか? – Thomas