奇偶链表

328. 奇偶链表

题目描述:

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。

请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。

class Solution:
    def oddEvenList(self, head: ListNode) -> ListNode:
        if not head:
            return head
        
        evenHead = head.next
        odd, even = head, evenHead
        while even and even.next:
            odd.next = even.next # head.next.next 但是不能再head上进行操作
            odd = odd.next
            even.next = odd.next
            even = even.next
        odd.next = evenHead
        return head

自己的想法:

为什么error:

  1. head 老在变,人家就没在这上面做变化,复制了两个开头,在进行分别操作

解题思路:

官方题解

fig1

感想:

对链表掌握不够,不知道链表的变化规则

posted @ 2021-04-09 10:20  Tonka  阅读(39)  评论(0编辑  收藏  举报