Leetcode 328. Odd Even Linked List
Medium
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.
You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.
Example 1:
Input:1->2->3->4->5->NULL
Output:1->3->5->2->4->NULL
Example 2:
Input: 2->1->3->5->6->4->7->NULL
Output:2->3->6->7->1->5->4->NULL
Note:
- The relative order inside both the even and odd groups should remain as it was in the input.
- The first node is considered odd, the second node even and so on ...
- 链表题需要画图把每一步逻辑搞清楚。两个指针,一个odd,一个even挨个往后走。
- https://leetcode.com/problems/odd-even-linked-list/solution/
1 # Definition for singly-linked list. 2 # class ListNode: 3 # def __init__(self, x): 4 # self.val = x 5 # self.next = None 6 7 class Solution: 8 def oddEvenList(self, head: ListNode) -> ListNode: 9 if head is None: 10 return None 11 12 odd = head 13 even = head.next 14 evenHead = even 15 16 while even and even.next: 17 odd.next = even.next 18 odd = odd.next 19 even.next = odd.next 20 even = even.next 21 22 odd.next = evenHead 23 24 return head