題目:
編寫乙個函式,檢查輸入的鍊錶是否是回文的。
示例
輸入: 1->2
輸出: false
個人思路
回文鍊錶即字元左右對稱,但是鍊錶是單向的,這時我們就要讓鍊錶後半部分進行翻轉,首先遍歷鍊錶獲得長度,然後讓快指標走到鍊錶的後半部分開頭,然後開始進行後半部分的鍊錶翻轉,翻轉結束後快指標走到鍊錶的結尾,這時讓慢指標從鍊錶頭部開始,兩指標向中間走,同時判斷對應的值是否相等,不相等表示不是回文串,返回false,如果到中間了都相等,表示是回文。
**
/**
* definition for singly-linked list.
* public class listnode
* }*/class solution
int len=0;
listnode l=head;
while(l!=null)
int fast_step=0;
if(len%2==0)else
listnode fast=head;
listnode fast_pre=fast;
listnode slow=head;
int i=fast_step;
while(i!=0)
listnode fast_nest=fast.next;
while(fast!=null)
}fast=fast_pre;
while(fast_step!=0)else
}return true;
}}
鍊錶快慢指標
public listnode removenthfromend listnode head,int n 為了找到要刪除的節點的前乙個節點,所以此處讓fast.next null while fast.next null 此時head為倒數第n個節點的前乙個節點。slow.next slow.nex...
鍊錶與快慢指標
之前刷劍指offer遇到尋找鍊錶環的入口節點,需要使用到快慢指標,然後題一變,發現自己總是不能立馬聯想起來。總結一下快慢指標法在鍊錶中的一些常見的用處。leetcode 141 快指標每次走2步,慢指標每次走1步,如果鍊錶中有環,則兩個指標就會相遇。public boolean hascycle l...
快慢指標 棧 234 回文鍊錶
判斷乙個鍊錶是否為回文鍊錶 使用空間為n 將鍊錶整個壓入棧。然後棧元素彈出。挨個比較元素是否相同。使用空間為n 2 快慢指標。快指標一次兩步慢指標一次一步。快指標到達結尾時,慢指標到達中間,中間部分之後壓入棧。然後棧彈出元素,與前半部分相比較。不使用額外空間 快慢指標。快指標一次兩步慢指標一次一步。...