1、题目:奇偶问题
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
.
2、解答:把奇数的结点放在偶数结点的前面。
3、C++代码
class Solution {
public:
ListNode* oddEvenList(ListNode* head) {
if(!head)
return head;
ListNode *odd =head,*evenhead = head->next,*even = evenhead;
while(even && even->next){
odd->next = odd->next->next;
even->next = even->next->next;
odd = odd->next;
even = even->next;
}
odd->next = evenhead;
return head;
}
};
python代码
class Solution:
def oddEvenList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if head == None:
return head
odd = head
evenhead = head.next
even = evenhead
while even and even.next:
odd.next = odd.next.next
even.next = even.next.next
odd = odd.next
even = even .next
odd.next = evenhead
return head