86. 分隔链表

这篇具有很好参考价值的文章主要介绍了86. 分隔链表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 


题目

题目链接:
86. 分隔链表,# Leetcode,链表,数据结构

算法 = 双指针交替前行 & 题目特征 = 需要同时遍历两个链表,并且在遍历的过程中根据节点值的大小进行操作

参考题解:https://leetcode.cn/problems/partition-list/solutions/2362068/86-fen-ge-lian-biao-shuang-zhi-zhen-qing-hha7/
86. 分隔链表,# Leetcode,链表,数据结构
把原链表分为俩个链表,smlDummy 放小于 x 的元素, bigDummy 放大于 x 的元素。

他的解法是什么?

  • 双指针交替而行。

他为什么用这个解法?

  • 题目特征:链表一分为二。

具体实现用了俩个头节点。为什么使用头结点?文章来源地址https://www.toymoban.com/news/detail-733172.html

  • 需要创造一条新链表的时候,可以使用虚拟头结点简化边界情况的处理。
  • 比如,把两条有序链表合并成一条新的有序链表,是不是要创造一条新链表?再比你想把一条链表分解成两条链表,是不是也在创造新链表?这些情况都可以使用虚拟头结点简化边界情况的处理。
class Solution {
public:
    ListNode* partition(ListNode* head, int x) {
        // 新建两个链表
        ListNode *smlDummy = new ListNode(0), *bigDummy = new ListNode(0);
        // 遍历链表
        ListNode *sml = smlDummy, *big = bigDummy;
        while (head != nullptr) {
            // 将 < x 的节点加入 sml 节点后
            if (head->val < x) {
                sml->next = head;
                sml = sml->next;
            // 将 >= x 的节点加入 big 节点后
            } else {
                big->next = head;
                big = big->next;
            }
            head = head->next;
        }
        // 拼接两链表
        sml->next = bigDummy->next;
        big->next = nullptr;
        return smlDummy->next;
    }
};

到了这里,关于86. 分隔链表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LeetCode】数据结构题解(5)[分割链表]

    所属专栏:玩转数据结构题型 博主首页:初阳785 代码托管:chuyang785 感谢大家的支持,您的点赞和关注是对我最大的支持!!! 博主也会更加的努力,创作出更优质的博文!! 关注我,关注我,关注我,重要的事情说三遍!!!!!!!! 分割链表 给你一个链表的头节点

    2024年02月04日
    浏览(48)
  • 【LeetCode】数据结构题解(6)[回文链表]

    所属专栏:玩转数据结构题型 博主首页:初阳785 代码托管:chuyang785 感谢大家的支持,您的点赞和关注是对我最大的支持!!! 博主也会更加的努力,创作出更优质的博文!! 关注我,关注我,关注我,重要的事情说三遍!!!!!!!! 回文链表 给定一个链表的 头节点

    2024年02月03日
    浏览(46)
  • 86. 分隔链表

      题目链接: 参考题解:https://leetcode.cn/problems/partition-list/solutions/2362068/86-fen-ge-lian-biao-shuang-zhi-zhen-qing-hha7/ 把原链表分为俩个链表,smlDummy 放小于 x 的元素, bigDummy 放大于 x 的元素。 他的解法是什么? 双指针交替而行。 他为什么用这个解法? 题目特征:链表一分为二。 具

    2024年02月07日
    浏览(50)
  • 61. 旋转链表 86. 分隔链表 |面试经典题

    题目 :给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 题目链接 :61. 旋转链表 截断拼接即可 题目 :给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留

    2024年01月22日
    浏览(59)
  • 【数据结构】[LeetCode138. 复制带随机指针的链表]

    给你一个长度为  n  的链表,每个节点包含一个额外增加的随机指针  random  ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的  深拷贝 。 深拷贝应该正好由  n  个  全新  节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的  next  指针和

    2024年02月04日
    浏览(46)
  • 【数据结构】LeetCode升级版的环形链表,复制带随机指针的链表

              1、题目说明           2、题目解析           1、题目说明           2、题目解析      1、题目说明 题目链接: 升级版的环形链表  给定一个链表的头节点 head ,返回链表开始入环的第一个节点。  如果链表无环,则返回NULL。 如果链表中有某个节点,可以通

    2024年01月16日
    浏览(57)
  • 力扣每日一题86:分隔链表

    给你一个链表的头节点  head  和一个特定值   x  ,请你对链表进行分隔,使得所有  小于   x  的节点都出现在  大于或等于   x  的节点之前。 你应当  保留  两个分区中每个节点的初始相对位置。 示例 1: 示例 2: 提示: 链表中节点的数目在范围  [0, 200]  内 -100 = N

    2024年02月07日
    浏览(37)
  • 【LeetCode】数据结构题解(9)[复制带随机指针的链表]

    所属专栏:玩转数据结构题型❤️ 🚀 博主首页:初阳785❤️ 🚀 代码托管:chuyang785❤️ 🚀 感谢大家的支持,您的点赞和关注是对我最大的支持!!!❤️ 🚀 博主也会更加的努力,创作出更优质的博文!!❤️ 🚀 关注我,关注我,关注我,重要的事情说三遍!!!!!

    2024年02月11日
    浏览(55)
  • 数据结构:带环单链表基础OJ练习笔记(leetcode142. 环形链表 II)(leetcode三题大串烧)

    目录 一.前言  二.leetcode160. 相交链表  1.问题描述 2.问题分析与求解 三.leetcode141. 环形链表 1.问题描述 2.代码思路  3.证明分析  下一题会用到的重要小结论: 四.leetcode142. 环形链表 II 1.问题描述 2.问题分析与求解 Judgecycle接口: 方法一: 方法二:  单链表和带环单链表

    2023年04月08日
    浏览(37)
  • (链表专题) 725. 分隔链表 ——【Leetcode每日一题】

    给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。 这 k 个部分应该按照在链表中出现的顺序排列,并且排在前面的部分的长

    2023年04月17日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包