写法一
# 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: Optional[ListNode]) -> Optional[ListNode]:
if not head or not head.next:
return head
odd_p = head
even_head, even_p = head.next, head.next
p = head.next.next
i = 3
while p:
nxt = p.next
if i % 2 == 1:
odd_p.next = p
odd_p = p
else:
even_p.next = p
even_p = p
i += 1
p = nxt
odd_p.next = even_head
even_p.next = None
return head
写法二:
class Solution:
def oddEvenList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head: # 写法二
return head
even_head = head.next
odd, even = head, even_head
while odd.next and even.next:
odd.next = even.next
odd = odd.next
even.next = odd.next
even = even.next
odd.next = even_head
return head