演算法練習 回文鍊錶 快慢指標 鍊錶翻轉

2021-10-06 18:16:31 字數 892 閱讀 4900

題目:

編寫乙個函式,檢查輸入的鍊錶是否是回文的。

示例

輸入: 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 快慢指標。快指標一次兩步慢指標一次一步。快指標到達結尾時,慢指標到達中間,中間部分之後壓入棧。然後棧彈出元素,與前半部分相比較。不使用額外空間 快慢指標。快指標一次兩步慢指標一次一步。...