写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。
import java.util.*;
public class Partition {
public ListNode partition(ListNode pHead, int x) {
if(pHead==null || pHead.next==null)
return pHead;
ListNode min = new ListNode(-1);
ListNode max = new ListNode(-1);
ListNode min_move = min;
ListNode max_move = max;
ListNode temp = pHead;
while(temp!=null){
if(temp.val<x)
{ min_move.next=temp; min_move = temp;}
else{
max_move.next=temp; max_move=temp;
}
temp = temp.next;
}
max_move.next = null;
min_move.next = max.next;
return min.next;
}
}