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

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

  • 相关阅读:
    DLL相关
    设备实时监控
    VC++定时器的运用
    iOS开发多线程篇—GCD的常见用法
    iOS开发多线程篇—线程的状态
    iOS开发多线程篇—GCD介绍
    iOS开发多线程篇—线程间的通信
    iOS开发多线程篇—线程安全
    iOS开发多线程篇—创建线程
    iOS开发多线程篇—多线程简单介绍
  • 原文地址:https://www.cnblogs.com/Asumi/p/12514527.html
Copyright © 2020-2023  润新知