想要解決這一道演算法題,建議先把 leetcode:206.反轉鍊錶 以及 leetcode 141.環形鍊錶 這兩題做一做!對解決回文鍊錶這一題很有幫助。
回文鍊錶的題目如下:
請判斷乙個鍊錶是否為回文鍊錶。
示例 1: 輸入: 1->2 輸出: false
示例 2: 輸入: 1->2->2->1 輸出: true
高階:你能否用 o(n) 時間複雜度和 o(1) 空間複雜度解決此題?
掌握反轉鍊錶的方法
掌握快慢指標的思維模式
找到鍊錶的中間節點,從而把鍊錶分成前半段和後半段。
反轉後半段鍊錶
把前半段鍊錶的值和後半段鍊錶的值進行比較,保持一致說明是回文鍊錶。否則,就不是。
/**
* definition for singly-linked list.
* function listnode(val)
*//**
* @param head
* @return
*/// 反轉鍊錶
const
reverselist
=function
(head)
return p2;
}// 前半部分鍊錶的尾結點(利用快慢指標的思想,找到鍊錶的中間結點)
const
findprehalfend
=function
(head)
return p1;
}var
ispalindrome
=function
(head)
else
}// 復原後半段鍊錶
prehalfend.next =
reverselist
(lasthalfstart)
;return result;
};
時間複雜度:o(n)
空間複雜度:o(1)
鍊錶 (判斷回文鍊錶)演算法
coding utf 8 author leadingme mail leadingme qq.com mywebsite leadingme.top 回文鍊錶 演算法要求 判斷乙個鍊錶是否為回文鍊錶 示例1 輸入 1 2 輸出 false 示例2 輸入 1 2 2 1 輸出 true class ...
鍊錶 回文鍊錶
在leetcode上有兩個題 234.回文鍊錶 面試題 02.06.回文鍊錶 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?遍歷一遍鍊錶得到值的陣列 判斷陣列是...
鍊錶回文問題
方法一,利用乙個棧 public boolean ispalindrome node head while head null return true 方法二,對方法一的優化,同樣利用棧結構,壓入一半的節點 public boolean ispalindrome1 node head stack s...