时间: 2019-12-12 7:41 PM
题目地址: https://leetcode.com/problems/partition-list/
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
给定一个链表和一个值x,对其进行分区,以使所有小于x的节点排在大于或等于x的节点之前。
您应该保留两个分区中每个分区中节点的原始相对顺序。
Example:
Input: head = 1->4->3->2->5->2, x = 3
Output: 1->2->2->4->3->5
Solution:
public ListNode partition(ListNode head, int x) {
if (null == head) {
return head;
}
ListNode lessHead = new ListNode(Integer.MIN_VALUE);
ListNode less = lessHead;
ListNode sentinel = new ListNode(Integer.MIN_VALUE);
sentinel.next = head;
ListNode prev = sentinel;
ListNode point = head;
while (null != point) {
if (point.val < x) {
prev.next = point.next;
less.next = point;
less = less.next;
} else {
prev = prev.next;
}
point = point.next;
}
less.next = sentinel.next;
return lessHead.next;
}
Runtime: 0 ms, faster than 100.00% of Java online submissions for Partition List.
Memory Usage: 35.8 MB, less than 100.00% of Java online submissions for Partition List.