leetcode------Partition List
标题: | Partition List |
通过率: | 27.5% |
难度: | 中等 |
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
.
本题就是利用一个target将链表分成两部分,小于target和大于target的
用两个链表进行记录,small和big进行连接时候一定要将.next置null,否则内存会一直叠加。连接的过程就是指针的重定向过程,所以一定要置null,要不然会讲整个链表连接过来,代码如下:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 public ListNode partition(ListNode head, int x) { 14 ListNode small=new ListNode(1); 15 ListNode big=new ListNode(1); 16 ListNode s=small,b=big; 17 if(head==null)return head; 18 while(head!=null){ 19 if(head.val<x){ 20 s.next=head; 21 head=head.next; 22 s=s.next; 23 s.next=null; 24 } 25 else{ 26 b.next=head; 27 head=head.next; 28 b=b.next; 29 b.next=null; 30 } 31 } 32 s.next=big.next; 33 return small.next; 34 } 35 }