leetCode 86.Partition List(分区链表) 解题思路和方法

来源:互联网 发布:锦官城桌游淘宝店 编辑:程序博客网 时间:2024/04/28 13:14

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的值分成两部分,具体思路和代码如下:

/** * 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) {    /**     * 思路是将list按X分成两段     * 小于的连接p     * 大于的连接q     * 最后合并p和q即可     */        ListNode p = new ListNode(0);        ListNode pHead = p;        ListNode q = new ListNode(0);        ListNode qHead = q;        //遍历        while(head != null){            if(head.val < x){//<x成一组                p.next = head;                p = p.next;            }else{//>=x成一组                q.next = head;                q = q.next;            }            head = head.next;        }        p.next = qHead.next;        q.next = null;//斩断后面的连接        return pHead.next;    }}



0 0
原创粉丝点击