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