鍊錶 判斷乙個鍊錶是否為回文鍊錶

2021-08-22 02:28:59 字數 955 閱讀 3456

思路1:找到中間節點然後把後面的翻轉,(需要斷開鍊錶)然後比較和頭節點開始的前段,最後要是後半段的游標可以走到最後說明是回文否則不是

思路2:整體翻轉比較

思路3:借助乙個棧存放前半段的元素,然後和後半段的比較

public boolean ispalindrome(listnode head) 

listnode fast = head.next;

listnode slow = head;

while (fast != null && fast.next != null )

listnode second = slow.next;

slow.next = null;

listnode secondhead = null;

listnode p = second;

while (p != null)

listnode p1 = head;

listnode p2 = secondhead;

while (p2 != null && p2.val == p1.val)

if (p2 == null) else

}

遞迴實現

遞迴的終止條件:

當長度為0或者1的時候表明鍊錶處於中間位置

class result

}public result ispalindromeresourse(listnode head,int length) else if (length == 1 ) else if (length == 2)

result res = ispalindromeresourse(head.next,length-2);

if (!res.result || res.node==null) else

}}結果就是返回值的result

鍊錶 判斷乙個鍊錶是否為回文結構

題目 給定鍊錶的頭節點,判斷該鍊錶是否為會問結構 如果鍊錶的長度為n,時間複雜度達到o n 額外空間複雜度達到o 1 方法一 public class node public boolean ispalindromel node head while head null head head.next...

鍊錶 判斷乙個鍊錶是否為回文結構

方法1 利用棧 t o n s o n 將鍊錶壓入棧,利用棧的先進後出逆序出鍊錶對比原鍊錶各節點值 public static boolean ispalindome1 node head cur head while s.isempty return true 方法2 利用棧 t o n s o ...

鍊錶 判斷乙個鍊錶是否為回文結構

1 題目描述 給定乙個鍊錶,請判斷該鍊錶是否為回文結構。2 思路 對於單鏈表而言,判斷乙個鍊錶是否為回文結構,可以先找出鍊錶的中間結點,然後將鍊錶的後半部分反轉 從鍊錶兩端開始逐一比較,如果不相等則返回false。2 a 如何尋找鍊錶的中間位置,使用雙指標 設定乙個快指標 pfast 乙個慢指標 p...