演算法 鍊錶 用Js解決回文鍊錶問題(簡單易懂)

2021-10-10 04:29:10 字數 1015 閱讀 8612

想要解決這一道演算法題,建議先把 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...