328. 奇偶链表
分析
- 特例处理:
- 如果链表为空,或只有一个节点,则无需操作,直接返回原链表
- 分离奇偶链表:
- 定义两个链表头指针:
odd_head
:奇数节点的头指针,初始为head
even_head
:偶数节点的头指针,初始为head->next
- 遍历链表:
- 用
odd_tail
和even_tail
分别维护奇数链表和偶数链表的尾节点 - 根据节点的索引位置,交替更新奇数链表和偶数链表的尾节点
- 用
- 定义两个链表头指针:
- 拼接奇偶链表:
- 将奇数链表的尾节点连接到偶数链表的头节点
- 将偶数链表的尾节点指向
nullptr
- 返回结果:
- 返回奇数链表的头节点
odd_head
- 返回奇数链表的头节点
时间复杂度
时间复杂度 O(n)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|