思路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...