NO.86 分隔链表 中等
思路一:尾插法创建链表 创建两个链表,min存放小于x的节点,max存放大于等于x的节点,遍历参数链表采用尾插法创建这两个链表。最后将max连接到min后面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public ListNode partition(ListNode head, int x) { if (head==null||head.next==null)return head; ListNode min=new ListNode(-1),max=new ListNode(-1); ListNode minP=min,maxP=max; while (head != null) { if (head.val < x) { minP.next=head; minP=head; }else { maxP.next=head; maxP=head; } head=head.next; } minP.next=max.next; maxP.next=null; return min.next; }
|
时间复杂度:O(n)
本人菜鸟,有错误请告知,感激不尽!
更多题解和源码:github