相似题目链接(题目几乎一模一样):https://leetcode-cn.com/problems/partition-list-lcci/
思路:使用两个指针进行分割比k小的值放入A链表,其他的放入B链表,最后进行连接。
注意点:
最后一个rTail的next必须进行清空处理,防止后面的next仍然小于K值。像上图的5之后的2值。
|
public ListNode partition(ListNode head, int x) {
ListNode headA=new ListNode(0);
ListNode tailA=headA;
ListNode headB=new ListNode(0);
ListNode tailB=headB;
while (head!=null){
if(head.val<x){
tailA.next=head;
tailA=head;
}else {
tailB.next=head;
tailB=head;
}
head=head.next;
}
tailB.next=null;
tailA.next=headB.next;
return headA.next;
}
|