每天一算:Partition Lis

2022-5-16 18:47| 发布者: Hocassian| 查看: 116| 评论: 0|原作者: 五分钟学算法微信公众号

摘要:

每天一算:Partition List

菠了个菜 五分钟学算法

LeetCode上第86号问题:Partition List

题目

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

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

示例:

输入: head = 1->4->3->2->5->2, x = 3  
输出: 1->2->2->4->3->5

解题思路

这道题要求我们划分链表,把所有小于给定值的节点都移到前面,大于该值的节点顺序不变,相当于一个局部排序的问题。

  • 设定两个虚拟节点,dummyHead1用来保存小于于该值的链表,dummyHead2来保存大于等于该值的链表

  • 遍历整个原始链表,将小于该值的放于dummyHead1中,其余的放置在dummyHead2

  • 遍历结束后,将dummyHead2插入到dummyHead1后面

动画演示

动画演示GIF有点大,请稍微等待一下加载显示^_^

动画演示

参考代码

执行结果


我们会在每天早上8点30分准时推送一条LeetCode上的算法题目,并给出该题目的动画解析以及参考答案,每篇文章阅读时长为五分钟左右。


    已同步到看一看

    发送中


    路过

    雷人

    握手

    鲜花

    鸡蛋

    最新评论

    返回顶部