划分链表
问题简述
给定链表和一个值 x,将所有小于 x 的值移动到左侧,保持相对顺序;
思路
快排中的 partition 操作;
因为链表的特殊性,扩展链表并不会带来额外的消耗;
考虑维护两个链表,分别保存小于 x 的节点和其他节点;最后将两个链表拼接即可;
此外还有一种基于双指针的思路:
考虑左指针有右指针,开始时,直接将右指针移动到末尾,然后遍历左指针,遇到大于等于 x 的节点就移动到右指针的位置;
Last updated
问题简述
给定链表和一个值 x,将所有小于 x 的值移动到左侧,保持相对顺序;
思路
快排中的 partition 操作;
因为链表的特殊性,扩展链表并不会带来额外的消耗;
考虑维护两个链表,分别保存小于 x 的节点和其他节点;最后将两个链表拼接即可;
此外还有一种基于双指针的思路:
考虑左指针有右指针,开始时,直接将右指针移动到末尾,然后遍历左指针,遇到大于等于 x 的节点就移动到右指针的位置;
Last updated