题目:
分析:
这道题我用了一个投机取巧的方法
我们新建一个同等长度的链表
然后对原链表进行遍历
小于x的先填入链表
再遍历一次
将大于x的也填入链表
这样时间复杂度为O(n)
代码:
class Solution {
public ListNode partition(ListNode head, int x) {
ListNode new_head=new ListNode(0);
ListNode temp_head=head;
ListNode temp=new_head;
while(temp_head!=null){
temp.next=new ListNode(0);
temp_head=temp_head.next;
temp=temp.next;
}
temp_head=head;
temp=new_head.next;
while(temp_head!=null){
if(temp_head.val<x) {
temp.val = temp_head.val;
temp=temp.next;
}
temp_head=temp_head.next;
}
temp_head=head;
while(temp_head!=null){
if(temp_head.val>=x) {
temp.val = temp_head.val;
temp=temp.next;
}
temp_head=temp_head.next;
}
return new_head.next;
}
}