leetcode第一刷_Partition List
来源:互联网 发布:免费健身软件2017 编辑:程序博客网 时间:2024/04/30 19:32
partition是快排的准备工作,被用在其他很多问题上,比如找满足某个条件的数之类的。
在数组中,可以一头一尾的指针依次置换,这样是不能保证源数组中的相对顺序的。链表中就不一样了,没办法拿到尾部的指针,只能从头部往后找,找到第一不满足partition条件的节点,即较大的数,然后再往后找较小数,把较小数的节点移到前面来,因此跟数组的做法还有个区别,链表的partition只有一个指针在做实际的移动,另一个指针一直保存的是插入的位置。
class Solution {public: ListNode *partition(ListNode *head, int x) { if(!head || !head->next) return head; ListNode *left = head, *right = head, *pre1 = NULL, *pre2 = NULL; while(left&&left->val<x){ pre1 = left; left = left->next; } right = left; while(right){ while(right&&right->val>=x){ pre2 = right; right = right->next; } if(right != left&&right){ pre2->next = right->next; if(pre1 == NULL){ right->next = head; head = right; }else{ right->next = pre1->next; pre1->next = right; } pre1 = right; right = pre2->next; } } return head; }};
0 0
- leetcode第一刷_Partition List
- leetcode第一刷_Sort List
- leetcode第一刷_Rotate List
- leetcode第一刷_Insertion Sort List
- leetcode第一刷_Linked List Cycle
- leetcode第一刷_Linked List Cycle II
- leetcode第一刷_Reverse Linked List II
- leetcode第一刷_Copy List with Random Pointer
- leetcode第一刷_ Flatten Binary Tree to Linked List
- leetcode第一刷_Convert Sorted List to Binary Search Tree
- leetcode第一刷_Remove Duplicates from Sorted List II
- leetcode 第一刷_Remove Nth Node From End of List
- leetcode第一刷_Candy
- leetcode第一刷_Triangle
- leetcode第一刷_Combinations
- leetcode第一刷_Anagrams
- leetcode第一刷_Permutations
- leetcode第一刷_Triangle
- unity 应用其它DLL方法
- 选购美规车型必看
- ubuntu应用~~~~~来自ubuntu吧
- 如何向回调函数中传参数
- svn的一个小问题:access to ...forbidden
- leetcode第一刷_Partition List
- 苹果Mac操作系统下怎么显示隐藏文件
- 9招教你如何设计一款电商app,并实现使用量170%增长
- 流 缓冲区 文件操作 IO
- 安全点和安全区域
- Power虚拟网络与OpenStack网络集成的一种设计(by quqi99)
- linux vi编辑器常用命令
- 从三个方面来讲:录制脚本,部署场景,分析结果。
- 修改.pro文件后,原错误还是存在