LeetCode75-328-Odd-Even-Linked-List

🧠 思路总结

将原链表 拆成 两条链:

  1. odd 链
  2. even 链

遍历过程中同时维护两个链表,最后把odd链尾部接到even链头部

❗ 易错点 / 小坑

大多数情况下:是先想清楚循环里要干什么,再反推需要什么终止条件

  • 忘记保存 evenHead
  • while 条件写错

✅ 代码(Java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode oddEvenList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode odd = head;
ListNode even = head.next;
ListNode evenHead = even; // 保存偶数链头

while (even != null && even.next != null) {
// 奇数链跳一步
odd.next = even.next;
odd = odd.next;
// 偶数链跳一步
even.next = odd.next;
even = even.next;
}
odd.next = evenHead; // 拼接链表
return head;
}
}

LeetCode75-328-Odd-Even-Linked-List
https://powersixxx.github.io/leetcode-blog/2026/02/13/LeetCode75-328-Odd-Even-Linked-List/
作者
Baowen Liu
发布于
2026年2月13日
许可协议