LeetCode – 86. 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.

For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.

又是一道一眼望到底的题目,但是操作起来又是很多陷阱。我发现很多linkedlist题目都是这样

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode partition(ListNode head, int x) {
        ListNode large = new ListNode(0);
        ListNode small = new ListNode(0);
        ListNode currl = large;
        ListNode currs = small;
        while(head !=null){
            if(head.val <x){
                currl.next = head;
                currl = currl.next; 
            }
            else{
                currs.next = head;
                currs = currs.next;
            }
            head = head.next;
        }
        currs.next = null;
        currl.next = small.next;
        return large.next;
    }
}

喜欢的话订阅一个呗~第一时间收到文章更新哟~

发表评论

电子邮件地址不会被公开。