LeetCode86 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.

Example:

Input: head = 1->4->3->2->5->2, x = 3
Output: 1->2->2->4->3->5

public ListNode partition(ListNode head, int x) {
        if(head == null || head.next == null) return head;
        ListNode dummyHead = new ListNode(-1);
        ListNode small = dummyHead;
        ListNode greatHead = new ListNode(0);
        ListNode great = greatHead;
        while(head != null){
            if(head.val < x){
                small.next = head;
                small = small.next;
                head = head.next;
            }else{
                great.next = head;
                great = great.next;
                head = head.next;
            }
        }
        small.next = greatHead.next;
        great.next = null;
        return dummyHead.next;
    }

猜你喜欢

转载自blog.csdn.net/fruit513/article/details/85012786
今日推荐