[LeetCode] Partition List
2012-11-19 14:45
357 查看
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
For example,
Given
return
类似于qsort的partition的思想,用两根指针记录左右两边。
You should preserve the original relative order of the nodes in each of the two partitions.
For example,
Given
1->4->3->2->5->2and x = 3,
return
1->2->2->4->3->5.
类似于qsort的partition的思想,用两根指针记录左右两边。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *partition(ListNode *head, int x) { // Start typing your C/C++ solution below // DO NOT write int main() function if (head == NULL) return NULL; ListNode *pPre = NULL; ListNode *p = head; ListNode *q = head; while(q->next) q = q->next; ListNode *tail = q; while(p != q) { if (p->val >= x) { ListNode *pNext = p->next; if (head == p) head = pNext; tail->next = p; p->next = NULL; tail = p; if (pPre) pPre->next = pNext; p = pNext; } else { pPre = p; p = p->next; } } if (p->val >= x && q != tail) { ListNode *pNext = p->next; if (head == p) head = pNext; tail->next = p; p->next = NULL; if (pPre) pPre->next = pNext; } return head; } };
相关文章推荐
- [Leetcode]#86 Partition List
- LeetCode-Partition List-分割链表-链表操作
- Partition List 分类: Leetcode(链表) 2015-03-03 21:13 29人阅读 评论(0) 收藏
- leetcode 链表 Partition List
- leetcode-Partition List
- leetcode_question_86 Partition List
- [LeetCode]86 Partition List
- Leetcode:Partition List
- 【leetcode】Partition List
- [Leetcode] Partition List
- leetcode-Partition List
- LeetCode - Refresh - Partition List
- [leetcode]Partition List
- leetcode--Partition List
- Leetcode -- Partition List
- [Leetcode] Partition List
- 开始刷leetcode day15:Partition List
- leetcode[86]Partition List
- leetcode_086 Partition List
- [leetcode]Partition List