86. Partition List
来源:互联网 发布:泰国直播软件 编辑:程序博客网 时间:2024/06/15 20:20
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; * struct ListNode *next; * }; */struct ListNode* partition(struct ListNode* head, int x) { struct ListNode *partition = NULL; struct ListNode *index= head; struct ListNode *preindex = NULL; while(index != NULL) { if (index->val < x) { // 找到 < x 的元素 if (preindex == NULL) { // 表示 head 是第一个 < x 的元素 partition = head; } else if (partition == NULL) { // 表示head 不是第一个 < x的元素 preindex->next = index->next; index->next = head; head = index; partition = index; index = preindex->next; continue; } else if (partition == preindex) { // 表示 partition 就是 preindex partition = index; } else { // 最普遍的情况 preindex->next = index->next; index->next = partition->next; partition->next = index; partition = index; index = preindex->next; continue; } } preindex = index; index = index->next; } return head;}
题目思想:
别人的思想:
创建一个开始的节点,就是我们上面partition有指向,然后往后面添加小于x的元素,最后将原来主链表中剩下的大于x的插入到已新创建的链表尾端:
struct ListNode* partition(struct ListNode* head, int x) { struct ListNode*head1=(struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode*head2=(struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode*left=head1; struct ListNode*right=head2; while(head!=NULL){ if(head->val<x){ head1->next=head; head1=head; } else{ head2->next=head; head2=head; } head=head->next; } head2->next=NULL;//delete will be wrong important avoid cycle head1->next=right->next; return left->next; }
阅读全文
0 0
- [LeetCode]86.Partition List
- LeetCode 86. Partition List
- [Leetcode] 86. Partition List
- LeetCode --- 86. Partition List
- 86. Partition List
- [leetcode] 86.Partition List
- [leetcode] 86. Partition List
- 86. Partition List
- [LeetCode]86. Partition List
- 86. Partition List
- 86. Partition List LeetCode
- 86. Partition List
- 86. Partition List
- 86. Partition List
- Leetcode 86. Partition List
- LeetCode *** 86. Partition List
- LeetCode 86. Partition List
- [LeetCode]86. Partition List
- 大数乘法--------------------------51nod1027
- vb.net 教程 12-6 webbrowser 文本编辑器 2
- 【网络流24题】航空路线问题(最大费用流)
- [BZOJ3295]动态逆序对CDQ分治
- 1604:字符串对比
- 86. Partition List
- LightOJ-1006-Hex-a-bonacci
- Boolan STL与泛型编程 第二周笔记
- 为什么要坚持长期写博客?
- 关西攻略
- 《沉默的大多数》(王小波)
- JAVA数据结构和算法:第五章(串和KMP算法)
- struts2的简单执行过程
- JS对象