码迷,mamicode.com
首页 > 其他好文 > 详细

【Leetcode】分隔链表

时间:2020-03-18 00:08:27      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:art   位置   简单   return   list   分区   def   problems   pre   

题目链接:分隔链表


题意:给定一个链表和一个特定值 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】分隔链表

标签:art   位置   简单   return   list   分区   def   problems   pre   

原文地址:https://www.cnblogs.com/Asumi/p/12514527.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!