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上的算法题目,并给出该题目的动画解析以及参考答案,每篇文章阅读时长为五分钟左右。


©著作权归作者所有:来自51CTO博客作者mb5fe18fab305a5的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 【图解数据结构】 一组动画彻底理解插入排序
  2. 【图解数据结构】 一组动画彻底理解快速排序
  3. 【图解数据结构】 一组动画彻底理解归并排序
  4. 【图解数据结构】 一组动画彻底理解选择排序
  5. 添加到我的小程序动画实现详细讲解,轻松学会动画开发!附壁纸小程序
  6. 动画:什么是散列表?
  7. 【图解数据结构】一组动画彻底理解堆排序
  8. 看动画轻松理解「 堆 」

随机推荐

  1. 分享php生成不重复随机数、数组的4种方法
  2. 详解php-fpm中max_children的配置
  3. 示例PHP实现单文件、多个单文件、多文件
  4. 聊聊PHP中的单例模式与静态变量
  5. 了解一下PHP 8的 JIT 特性!
  6. 探秘PHP number_format函数原理及实例解
  7. 直击PHP array_reverse() 函数原理及实例
  8. 深入了解PHP反射API!
  9. 看懂PHP进程管理器php-fpm
  10. PHP 的 NTS 和 TS 之间的区别?