题目:
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:
Given 1->2->3->4->5->NULL
,
return 1->3->5->2->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 ...
Credits:
题意:
给定单链表,将单链表的奇节点组合在一起,偶节点组合在一起,并将所有偶节点连在奇节点后面,单链表相对位置保持不变。
代码:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def oddEvenList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if head != None :
odd = None #奇节点
even = None #偶节点
cur_odd = None #奇节点
cur_even = None #偶节点
odd = head
cur_odd = odd
if head.next != None :
even = head.next
cur_even = even
head = head.next
k = 1
while head.next != None :
if k == 1 :
cur_odd.next = head.next
cur_odd = cur_odd.next
head = head.next
k = 2
else :
cur_even.next = head.next
cur_even = cur_even.next
head = head.next
k = 1
if k == 1 :
cur_odd.next = None
if k == 2 :
cur_even.next = None
cur_odd.next = even
return odd
笔记:
创建两个节点odd和even,odd记录所有奇节点,even记录所有的偶节点,最后将奇节点链表指向偶节点链表,组成新的链表