leetcode 86:分隔链表
给你一个链表的头节点 head
和一个特定值 x
,请你对链表进行分隔,使得所有 小于 x
的节点都出现在 大于或等于 x
的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。
示例 1:
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]
示例 2:
输入:head = [2,1], x = 2
输出:[1,2]
提示:
- 链表中节点的数目在范围
[0, 200]
内 -100 <= Node.val <= 100
-200 <= x <= 200
Related Topics
链表
双指针
双指针
class Solution {
public ListNode partition(ListNode head, int x) {
//记录小于x的节点
ListNode headMin = new ListNode();
ListNode p = headMin;
//记录大于x的节点
ListNode headMax = new ListNode();
ListNode q = headMax;
while (head != null){
if(head.val < x){
p.next = head;
p = head;
}else{
q.next = head;
q = head;
}
ListNode temp = head;
head = head.next;
temp.next = null;
}
//小于的元素指向x
p.next = headMax.next;
return headMin.next;
}
}
解答成功:
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:40.6 MB,击败了75.55% 的Java用户