86. Partition List

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;
    }
}