https://leetcode.com/problems/partition-list/
Given the head of 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.
Example 1: Input: head = [1,4,3,2,5,2], x = 3 Output: [1,2,2,4,3,5] Example 2: Input: head = [2,1], x = 2 Output: [1,2]
Constraints:
The number of nodes in the list is in the range [0, 200].
-100 <= Node.val <= 100
-200 <= x <= 200
- code
class Solution {
public ListNode partition(ListNode head, int x) {
ListNode first = new ListNode();
ListNode second = new ListNode();
ListNode firstHead = first;
ListNode secondHead = second;
ListNode cur = head;
while (cur != null){
if (cur.val < x){
first.next = cur;
first = first.next;
}else{
second.next = cur;
second = second.next;
}
cur = cur.next;
}
second.next = null;
first.next = secondHead.next;
return firstHead.next;
}
}