【链表】Partition List

来源:互联网 发布:机顶盒网络灯红色 编辑:程序博客网 时间:2024/04/29 21:48

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.

将链表分成两部分,前一部分是小于x的节点,后一部分是大于等于x的节点,再连接;因为要保证两部分的节点相对位置,所以选择尾插入

public class Solution {    public ListNode partition(ListNode head, int x) {        if(head == null) return head;                ListNode h1 = new ListNode(0);        ListNode h2 = new ListNode(0);                ListNode p = head;        ListNode p1 = h1;        ListNode p2 = h2;        while(p != null){            if(p.val < x){                p1.next = p;                p1 = p1.next;            }            else{                p2.next = p;                p2 = p2.next;            }            p = p.next;        }        p1.next = h2.next;        p2.next = null;        head = h1.next;                h1.next = null;        h2.next = null;        return head;    }}


0 0
原创粉丝点击