题目: 328. 奇偶链表

每日一题20201113(328. 奇偶链表)

思路

定义3个指针,分别为jishu(指向第一个节点), oushu(第一个偶数节点)和oushu_head(第一个偶数节点)
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def oddEvenList(self, head: ListNode) -> ListNode:
        if head is None:
            return head
        # 指向第一个奇数节点
        jishu = head
        # 指向第一个偶数节点
        oushu_head = oushu = head.next
        # 当偶数节点不存在或者偶数节点后面没有节点时循环结束
        while oushu is not None and oushu.next is not None:
            # 把偶数的下一个节点(奇数节点)给jishu
            jishu.next = oushu.next
            # jishu奇数指针指向刚才赋予的奇数节点(这样jishu指向第二个奇数节点) 
            jishu = jishu.next
            # 把奇数的下一个节点(偶数节点)指向给偶数
            oushu.next = jishu.next
            # 把偶数节点往后挪一位 此时oushu: 2->4
            oushu = oushu.next
        # 把oushu_head接入jishu的后面节点(这里其实jishu节点已经到最后一个奇数了)
        jishu.next = oushu_head
        # 返回修改后的head即可
        return head

每日一题20201113(328. 奇偶链表)

相关文章:

  • 2021-07-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-20
  • 2021-12-06
  • 2021-09-03
  • 2021-06-04
猜你喜欢
  • 2021-05-03
  • 2021-09-25
  • 2022-02-11
  • 2021-06-13
  • 2021-08-01
  • 2021-12-27
  • 2021-05-10
相关资源
相似解决方案