题目: 328. 奇偶链表
image-20201113175101832
思路
定义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
image-20201113214140509