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
把奇数位置节点连在一起,再把偶数位置节点连在一起,再把这两个链表连在一起。
思路就是新建两个节点dummy1和dummy2。
然后不断遍历head,分别连接偶数位置和奇数位置的节点。
思路比较简单,注意偶数节点最后要设置even.next=None即可
class Solution:
def oddEvenList(self, head: ListNode) -> ListNode:
dummy1=even=ListNode(0)
dummy2=odd=ListNode(0)
while head:
odd.next=head
odd=odd.next
head=head.next
if head:
even.next=head
even=even.next
head=head.next
even.next=None
odd.next=dummy1.next
return dummy2.next