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 ...

 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                
View Code

 

 

posted on 2019-07-10 21:19  浩然119  阅读(112)  评论(0编辑  收藏  举报