题目:
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.
将偶数位置的结点放在左边,奇数位置的结点放在右边
代码:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* oddEvenList(ListNode* head) { if(head==NULL || head->next==NULL) return head; ListNode *odd = head,*evenHead = head->next, *even = evenHead; while(even != NULL && even->next != NULL) { odd->next = even->next; odd = odd->next; even->next = odd->next; even = even->next; } odd->next = evenHead; return head; } };
本文介绍了一种在单链表中将所有奇数位置的节点分组到一起,然后跟随所有偶数位置节点的算法。该算法在原地操作,空间复杂度为O(1),时间复杂度为O(nodes)。通过示例展示,如输入1->2->3->4->5->NULL,输出1->3->5->2->4->NULL。
492

被折叠的 条评论
为什么被折叠?



