LeetCode-86-分隔链表

看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~

谁能九层台,不用累土起!

题目地址

题目

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

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

示例 1:

image.png

1
2
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]

示例 2:

1
2
输入:head = [2,1], x = 2
输出:[1,2]

提示:

  • 链表中节点的数目在范围 [0, 200]
  • -100 <= Node.val <= 100
  • -200 <= x <= 200

解题思路

  • 将链表分成两个链表,分别为小于x的小链表和大于等于x的大链表
  • 将小链表与大链表连接即可完成解题

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var partition = function(head, x) {
if(!head||!head.next) return head
let vnodeBig = new ListNode(-1,head)
let vnodeSmall = new ListNode(-1,head)
let big = vnodeBig
let small = vnodeSmall
while(head){
if(head.val<x){
small.next = head
small = small.next
}else{
big.next =head
big = big.next
}
head = head.next
}
big.next = null
small.next = vnodeBig.next
return vnodeSmall.next
};
文章作者: Joker
文章链接: https://qytayh.github.io/2021/12/LeetCode-86-%E5%88%86%E9%9A%94%E9%93%BE%E8%A1%A8/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker's Blog