• 【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 的节点之前。

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

  • 相关阅读:
    整合规则引擎urule
    vue学习
    发送put请求,get请求
    jpa自定义字段
    spring的3种配置方式
    netty
    springsercurity和shiro
    git报错
    Scrapy全站数据爬取
    python操作Excel模块openpyxl
  • 原文地址:https://www.cnblogs.com/Asumi/p/12514527.html
Copyright © 2020-2023  润新知