Leetcode算法学习日志-86 Partition List
来源:互联网 发布:linux下如何退出vi 编辑:程序博客网 时间:2024/06/05 08:06
Leetcode 86 Partition List
题目原文
Given a linked list and a value x, partition it such that all nodes less thanx 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
.
题意分析
给定一个链表,链表存储一串数,对一个数x,重构链表,使得小于x的数在大于或等于x的数的左边,且保持原顺序不变。
解法分析
构建两个链表,一个首地址为lessNode,一个首地址为greaterNode,通过修改next指针的操作,将小于x的node链接到lessNode上,C++代码如下:
/** * 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) { ListNode *nextNode=head; ListNode *lessNode,*temp1,*greaterNode,*temp2; int less=0,greater=0; while(nextNode!=NULL){ if((*nextNode).val<x){//use (*nextNode).val if(less==0){ lessNode=nextNode; temp1=lessNode; less=1; } else{ (*temp1).next=nextNode; temp1=nextNode; } } else{ if(greater==0){ greaterNode=nextNode; temp2=greaterNode; greater=1; } else{ (*temp2).next=nextNode; temp2=nextNode; } } //cout<<(*nextNode).val<<endl; nextNode=(*nextNode).next; } if(less==0||greater==0){ return head; } (*temp1).next=greaterNode; (*temp2).next=NULL;//the end node's next should be NULL ListNode *pp=lessNode; // while(pp!=NULL){ // cout<<(*pp).val<<endl; //pp=(*pp).next; // } return lessNode; }};注意全序列没有小于x或只有小于x的数的情况,这时直接返回head。对于一般情况,需要在最后让temp2.next为NULL,不然输出程序会进入死循环。
阅读全文
0 0
- Leetcode算法学习日志-86 Partition List
- LeetCode算法题目:Partition List
- LeetCode 86: Partition List
- LeetCode 86 Partition List
- [leetcode 86] Partition List
- leetcode-86 Partition List
- [LeetCode 86]Partition List
- leetcode || 86、Partition List
- LeetCode---(86) Partition List
- LeetCode 86 Partition List
- Leetcode[86]-Partition List
- leetcode[86]:Partition List
- Leetcode #86 Partition List
- LeetCode(86) Partition List
- leetcode 86: Partition List
- [Leetcode]#86 Partition List
- leetCode #86 Partition List
- leetcode 86:Partition List
- 欢迎使用CSDN-markdown编辑器
- Python学习2
- SpringBoot30-springboot企业级开发-异步消息
- mysql 性能优化方案
- SSL2542 2016提高组模拟试题 皮皮(并查集)
- Leetcode算法学习日志-86 Partition List
- swift print Double
- 线程同步工具包总结
- 25_多线程
- nuxt 的异步请求方式 await axios和 axios区别
- Qt中文乱码解决思路
- [NOIP模拟] Game
- BZOJ 5071 [Lydsy 十月月赛] 排序 解题报告
- 线性表的引入及其基本操作