Leetcode分隔链表

Posted 大写的一个帅比

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode分隔链表相关的知识,希望对你有一定的参考价值。

题目链接:分隔链表


题意:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

你应当保留两个分区中每个节点的初始相对位置


题解:QAQ刚开始看题目看错了。以为是那种排序。要按大小的。写了一堆错的。然后重新看题,发现简单了不少啊。

用两个链表分别放比x小的和比x大的,最后组合在一起就行了。。只要求保留相对位置


代码:

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* partition(ListNode* head, int x) {
12         ListNode* big = new ListNode(0);
13         ListNode* small = new ListNode(0);
14 
15         ListNode* pb = big;
16         ListNode* ps = small;
17         while(head){
18             if(head->val < x){
19                 ps->next = head;
20                 ps = ps->next;
21             }
22             else{
23                 pb->next = head;
24                 pb = pb->next;
25             }
26             head = head->next;
27         }
28         
29         ps->next = big->next;
30         pb->next = NULL;
31 
32         return small->next;
33     }
34 };

 

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

你应当保留两个分区中每个节点的初始相对位置。

以上是关于Leetcode分隔链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-链表分隔链表

链表--分隔链表(leetcode86

LeetCode 0086.分隔链表

Leetcode分隔链表

LeetCode#86-分隔链表

LeetCode 86. 分隔链表(Partition List)