Partition List( LeetCode )
来源:互联网 发布:淘宝如何链接 编辑:程序博客网 时间:2024/06/06 18:15
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 1->4->3->2->5->2
and x = 3,
return 1->2->2->4->3->5
.
/** * 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) { if( head == NULL || head -> next == NULL )return head;<span style="white-space:pre"></span>// case 1:链表为空或者只有一个元素,则直接返回ListNode *p = NULL,*q = head;ListNode *begin = NULL,*end = NULL,*inbegin = NULL,*inend = NULL;// begin,end 为第一个大于等于x的切割位点while( q != NULL ){<span style="white-space:pre"></span>// inbegin,inend 为切割点之后所有小于x的元素的if( q -> val >= x ){<span style="white-space:pre"></span>// 首尾元素begin = p;end = q;break;}p = q;q = q -> next;}if( q == NULL || q -> next == NULL ) return head;<span style="white-space:pre"></span>//case 2:不存在切割点或者切割点为最后一个元素,则无需改动int flag = 1;while( q != NULL ){if( q -> val < x ){p -> next = q -> next;if( flag ){<span style="white-space:pre"></span>// inbegin,inend 的赋值inbegin = q;inend = q;flag = 0;q = q -> next;continue;}inend -> next = q;inend = inend -> next;q = q -> next;}else { p = q; q = q -> next;}}if( inbegin == NULL ) return head;<span style="white-space:pre"></span>//case 3:切割点后不存在小于x的点,直接返回 <span style="white-space:pre"></span>else if( begin == NULL ){<span style="white-space:pre"></span>//case 4:切割点在head位置,则在head之前插入inbegin至inend的元素,inend -> next = end;<span style="white-space:pre"></span>//返回inbeginreturn inbegin;}else{<span style="white-space:pre"></span>//case 5:切割点不在首部,且之后存在小于x的元素,则将inbegin至inendbegin -> next = inbegin;<span style="white-space:pre"></span>//之间的元素插入切割点,返回headinend -> next = end;return head;} }};
0 0
- LeetCode: Partition List
- LeetCode Partition List
- LeetCode: Partition List
- [Leetcode] Partition List **
- [Leetcode] Partition List
- [LeetCode] Partition List
- leetcode 81: Partition List
- [Leetcode] Partition List
- leetcode 118: Partition List
- [LeetCode]Partition List
- [leetcode]Partition List
- LeetCode-Partition List
- [leetcode] Partition List
- LeetCode - Partition List
- [LeetCode] Partition List
- LeetCode 86: Partition List
- LeetCode:Partition List
- 【leetcode】Partition List
- jQuery--checkbox全选/取消全选
- COCOS2DX 3.0 优化提升渲染速度 Auto-batching
- Fragment的详细介绍和使用方法及案例
- 你知道别人是怎么看你简历的吗?
- jsonp详解
- Partition List( LeetCode )
- 农民PS官员艳照勒索947万元 多人碍于面子汇款
- NYOJ-169 素数
- 国外网站
- Activity的状态
- localStorge之storage事件
- 黑马程序员-习题练习3
- 货物列车尾部安全防护装置
- jndi调用时,各种应用服务器InitialContext的写法