给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。
思路:遍历链表,用两个栈分别存入大于等于x和小于x的值(比较粗糙的方法
class Solution {
public ListNode partition(ListNode head, int x) {
Deque<Integer> q1=new LinkedList<>();
Deque<Integer> q2=new LinkedList<>();
ListNode temp=head;
while(temp!=null){
if(temp.val<x) q1.push(temp.val);
else q2.push(temp.val);
temp=temp.next;
}
ListNode node=null;
while(!q2.isEmpty()){
ListNode ln=new ListNode(q2.poll());
ln.next=node;
node=ln;
}
while(!q1.isEmpty()){
ListNode ln=new ListNode(q1.poll());
ln.next=node;
node=ln;
}
return node;
}
}