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

2021-09-25 03:18:01 字數 1139 閱讀 6584

//方法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(n/2)

//將鍊錶後半段壓入棧,逆序後半段 與前半段鍊錶值比較

public static boolean ispalindome2(node head)

//2、後半段壓棧

node cur = slow.next;

while(cur != null)

//3、比較前半段與後半段

cur = head;

while(!s.isempty())

return true;

} //方法3:僅用指標 t= o(n) s = o(1)

//將鍊錶後半段反轉,後半段 與前半段鍊錶值比較,然後將後半段鍊錶恢復

public static boolean ispalindome3(node head)

//2、後半段反轉

node pre = slow;

node cur = slow.next;

node next = null;

pre.next = null;//中間節點指向null

while(cur != null)

node last = pre;//記錄終結點 以便後期恢復使用

//3、比較前半段與後半段,檢查回文

//後半段頭結點為pre

cur = head;

while(cur != null && pre != null)

//4、恢復後半段鍊錶

pre = last;

cur = pre.next;

while(cur != null)

return true;

}

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

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

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

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

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

給定乙個鍊錶的頭節點head,請判斷該鍊錶是否為回文結構。例如 1 2 1,返回true。1 2 2 1,返回true。15 6 15,返回true。1 2 3,返回false。高階 如果鍊錶長度為n,時間複雜度達到o n 額外空間複雜度達到o 1 解法一 使用快慢指標將slow指向的鍊錶的一半壓入...