判斷乙個鍊錶是否為回文鍊錶。
示例 1:解題思路1:將鍊錶放在乙個陣列裡,因為陣列具有隨機訪問的特點,所以可以採用陣列來比較是否是回文鍊錶。輸入:1->2輸出:false示例 2:輸入:1->2->2->1輸出:true
class solution
int first = 0;
int end = array.size()-1;
while(first < end)
first++;
end--;
}return true;
}}
解題思路2:將該鍊錶從中間分為兩半,將後半段鍊錶進行反轉,然後與前半段的鍊錶比較是否相等。
class solution
listnode slow = head;
listnode fast = head.next;
while(fast != null && fast.next != null)
if(fast != null)
//分割
cut(head,slow);
//反轉
listnode tmp = reverse(slow);
//比較
return isequal(head,tmp);
}private void cut(listnode head,listnode slow)
head.next = null;
}private listnode reverse(listnode head)
return newhead;
}private boolean isequal(listnode head,listnode newhead)
head = head.next;
newhead = newhead.next;
}return true;
}}
LeetCode 234 回文鍊錶
請判斷乙個鍊錶是否為回文鍊錶。definition for singly linked list.struct listnode bool ispalindrome struct listnode head 示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 要...
leetcode 234 回文鍊錶
請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false 示例 2 輸入 1 2 2 1輸出 true 解法1 使用棧 使用快慢指標找中點,原理是每次快指標走兩步,慢指標走一步,等快指標走完時,慢指標的位置就是中點。我們還需要用棧,每次慢指標走一步,都把值存入棧中,等到達中點時,鍊錶的前...
LeetCode 234 回文鍊錶
請判斷乙個鍊錶是否為回文鍊錶。解題思路 根據 o n 時間複雜度和 o 1 空間複雜度的要求,則不能使用堆疊。首先找到中間節點,然後反轉中間節點之後的節點,最後比較頭結點和中間節點之後元素的大小。bool solution ispalindrome listnode head 1.找到鍊錶的中間位置...