法一:棧 時間o(n)+空間o(n)public static boolean ispanlindrome(node head)
second=second.next;//second指向後半部分第乙個元素
stackstack=new stack();
while(second!=null)
while(!stack.isempty())else}return true;
}法二:棧+逆序 時間o(n)+空間o(1)
public static boolean isplrome(node head)
node pre=reverse(second);//逆序後半部分
node last=pre; //記錄要恢復鍊錶的後半部分頭部
while(pre!=head)else
}node p=reverse(last);//恢復鍊錶
return res;
}public static node reverse(node prenode)
return pre;
}
判斷鍊錶是否為回文結構
給定乙個鍊錶的頭節點 head,請判斷該鍊錶是否為回文 正反結構相同 結構。如果鍊錶長度為 n,時間複雜度達到 o n 額外空間複雜度達到 o 1 參考 程式設計師 面試指南 放入棧,時間複雜度o n 空間複雜度o n bool ispalindrome1 node head while null ...
OJ 判斷鍊錶是否為回文結構
思路 先找到鍊錶的中間節點,然後將鍊錶從中間節點之後的後半段反轉 然後將前半段與後半段逐一進行比較。鍊錶的建立 struct listnode bool ispalindrome struct listnode head 將後半段進行反轉 struct listnode newhead null s...
判斷乙個鍊錶是否為回文結構
題目 給定乙個鍊錶的頭結點head,判斷該鍊錶是否為回文結構。例如 1 2 1,返回true 1 2 2 1,返回true 15 6 15,返回true 1 2 3,返回false 方法一 利用棧結構實現。從頭遍歷鍊錶,遍歷的同時把加點一次壓入棧中。因為棧為先進後出結構,所以遍歷完成後,從棧頂到棧底...