LeetCode-86-分隔链表

题目

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

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

示例 1:

img
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的数,之后连接到一起即可。

代码应该是比较清晰的!(●ˇ∀ˇ●)

时间复杂度100%!叉腰.jpg!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public ListNode partition(ListNode head, int x) {
// 两个链表,一个保存小于x的值,一个保存大于x的值,然后连在一块
ListNode cur = head;
ListNode small = new ListNode(-101, null);
ListNode smallCur = small;
ListNode big = new ListNode(-101, null);
ListNode bigCur = big;
while (cur != null) {
if (cur.val < x) {
smallCur.next = new ListNode(cur.val, null);
smallCur = smallCur.next;
} else {
bigCur.next = new ListNode(cur.val, null);
bigCur = bigCur.next;
}
cur = cur.next;
}
smallCur.next = big.next;
return small.next;
}
}

LeetCode-86-分隔链表
https://excelius.xyz/leetcode-86-分隔链表/
作者
Ther
发布于
2024年7月23日
许可协议