mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
@ -144,6 +144,75 @@ public:
|
|||||||
## Java
|
## Java
|
||||||
|
|
||||||
```java
|
```java
|
||||||
|
// 方法一,使用数组
|
||||||
|
class Solution {
|
||||||
|
public boolean isPalindrome(ListNode head) {
|
||||||
|
int len = 0;
|
||||||
|
// 统计链表长度
|
||||||
|
ListNode cur = head;
|
||||||
|
while (cur != null) {
|
||||||
|
len++;
|
||||||
|
cur = cur.next;
|
||||||
|
}
|
||||||
|
cur = head;
|
||||||
|
int[] res = new int[len];
|
||||||
|
// 将元素加到数组之中
|
||||||
|
for (int i = 0; i < res.length; i++){
|
||||||
|
res[i] = cur.val;
|
||||||
|
cur = cur.next;
|
||||||
|
}
|
||||||
|
// 比较回文
|
||||||
|
for (int i = 0, j = len - 1; i < j; i++, j--){
|
||||||
|
if (res[i] != res[j]){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 方法二,快慢指针
|
||||||
|
class Solution {
|
||||||
|
public boolean isPalindrome(ListNode head) {
|
||||||
|
// 如果为空或者仅有一个节点,返回true
|
||||||
|
if (head == null && head.next == null) return true;
|
||||||
|
ListNode slow = head;
|
||||||
|
ListNode fast = head;
|
||||||
|
ListNode pre = head;
|
||||||
|
while (fast != null && fast.next != null){
|
||||||
|
pre = slow; // 记录slow的前一个结点
|
||||||
|
slow = slow.next;
|
||||||
|
fast = fast.next.next;
|
||||||
|
}
|
||||||
|
pre.next = null; // 分割两个链表
|
||||||
|
|
||||||
|
// 前半部分
|
||||||
|
ListNode cur1 = head;
|
||||||
|
// 后半部分。这里使用了反转链表
|
||||||
|
ListNode cur2 = reverseList(slow);
|
||||||
|
|
||||||
|
while (cur1 != null){
|
||||||
|
if (cur1.val != cur2.val) return false;
|
||||||
|
|
||||||
|
// 注意要移动两个结点
|
||||||
|
cur1 = cur1.next;
|
||||||
|
cur2 = cur2.next;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
ListNode reverseList(ListNode head){
|
||||||
|
// 反转链表
|
||||||
|
ListNode tmp = null;
|
||||||
|
ListNode pre = null;
|
||||||
|
while (head != null){
|
||||||
|
tmp = head.next;
|
||||||
|
head.next = pre;
|
||||||
|
pre = head;
|
||||||
|
head = tmp;
|
||||||
|
}
|
||||||
|
return pre;
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Python
|
## Python
|
||||||
@ -209,11 +278,13 @@ class Solution:
|
|||||||
## Go
|
## Go
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## JavaScript
|
## JavaScript
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user