每天一算:Partition List
16lz
2021-01-22
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上的算法题目,并给出该题目的动画解析以及参考答案,每篇文章阅读时长为五分钟左右。
更多相关文章
- 【图解数据结构】 一组动画彻底理解插入排序
- 【图解数据结构】 一组动画彻底理解快速排序
- 【图解数据结构】 一组动画彻底理解归并排序
- 【图解数据结构】 一组动画彻底理解选择排序
- 添加到我的小程序动画实现详细讲解,轻松学会动画开发!附壁纸小程序
- 动画:什么是散列表?
- 【图解数据结构】一组动画彻底理解堆排序
- 看动画轻松理解「 堆 」