首页 > 其他分享 >分隔链表

分隔链表

时间:2022-08-16 20:37:11浏览次数:80  
标签:large head 分隔 next 链表 small 节点

目录

题目描述

  1. 题目地址:https://leetcode.cn/problems/partition-list/
  2. 题目要求
    给你一个链表的头节点head和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 **大于或等于 **x 的节点之前。
    你应当 保留 两个分区中每个节点的初始相对位置。
  3. 示例 1:
    输入:head = [1,4,3,2,5,2], x = 3
    输出:[1,2,2,4,3,5]
    示例2:
    输入:head = [2,1], x = 2
    输出:[1,2]

解题思路

  1. 只需维护两个链表small 和large 即可,将 small 链表尾节点指向large 链表的头节点即可完成对链表的分隔
  2. 同时设smalllarge节点指向当前链表的末尾节点,开始时smallHead=small,largeHead=large
  3. 定义 smallHeadlargeHead 为两个链表的哑节点,它们的 next 指针指向链表的头节点,目的是为了更方便地处理头节点为空的边界条件
  4. 遍历结束后,我们将 \textit{large}large 的 \textit{next}next 指针置空,这是因为当前节点复用的是原链表的节点,而其 \textit{next}next 指针可能指向一个小于 x的节点

解题代码

var partition = function(head, x) {
    let small = new ListNode(0);
    const smallHead = small;
    let large = new ListNode(0);
    const largeHead = large;
    while (head !== null) {             //边界处理
        if (head.val < x) {
            small.next = head;
            small = small.next;   //small 的next 指针指向该节点,
        } else {
            large.next = head;
            large = large.next;   //否则将large 的 next 指针指向该节点。
        }
        head = head.next;
    }
    large.next = null;
    small.next = largeHead.next;
    return smallHead.next;
};

标签:large,head,分隔,next,链表,small,节点
From: https://www.cnblogs.com/xiayuxue/p/16592850.html

相关文章

  • LeetCode 反转链表算法题解 All In One
    LeetCode反转链表算法题解AllInOnejs/ts实现反转链表反转链表原理图解双指针,swap交换//反转双指针//swap:a=b;c=a;b=c;letprev:List......
  • 删除链表的倒数第 N 个结点
    题目描述题目地址:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/题目要求:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。解题思路......
  • 合并两个排序的链表
    目录题目描述解题思路解题代码题目描述题目地址:http://mtw.so/6r71s0题目要求:输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的......
  • django ORM定义实现链表结构
    需求场景各种链表使用场景,如单串,双端链表等需求描述实现阶段间串联的可前进后退的关系模型逻辑分析节点间串联.主要需要控制的是前节点和后节点的顺序关系以及......
  • 1075 链表元素分类——25分
    给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而[0,K]区间内的元素都排在大于K的元素前面。但每一类内部元素的顺序是不能改变......
  • 链表内指定区间反转
    目录题目描述解题思路解题代码题目描述题目地址:http://mtw.so/5Pu929题目要求将一个节点数为size链表m位置到n位置之间的区间反转,要求时间复杂度O(n),空间复......
  • 反转链表
    题目描述题目地址:http://mtw.so/6jyXMj题目要求给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范......