LeetCode 328. 奇偶链表

题目描述

🔥 328. 奇偶链表

image-20220917134534684

思路分析

解题思路:

  1. 创建两个链表,分别用于存储奇数节点和偶数节点,即 oddHeadevenHead
  2. 遍历原链表,根据节点的奇偶编号将节点连接到相应的链表上。
  3. 最后,将 oddHead 的尾节点与 evenHead 的头节点相连接,并返回 oddHead 的头节点作为结果。

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
func oddEvenList(head *ListNode) *ListNode {
	if head == nil || head.Next == nil {
		return head
	}
	oddHead, evenHead := &ListNode{}, &ListNode{}
	odd, even := oddHead, evenHead
	isOdd := true
	cur := head
	for cur != nil {
		if isOdd {
			odd.Next = cur
			odd = odd.Next
		} else {
			even.Next = cur
			even = even.Next
		}
		isOdd = !isOdd
		cur = cur.Next
	}
	odd.Next = evenHead.Next
	even.Next = nil
	return oddHead.Next
}

🍏 点击查看 Java 题解

1
write your code here

相似题目

题目 难度 题解
分隔链表 Medium  
本文作者:
本文链接: https://hgnulb.github.io/blog/54921733
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!