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