题目描述
给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/partition-list
解题思路
把链表的数据存放到数组中,然后建立新的链表头节点,然后对数组逐一遍历,先放小于x的,再放大于等于x的
解题代码
class Solution {
public ListNode partition(ListNode head, int x) {
ArrayList<Integer> list = new ArrayList<Integer>();
for(ListNode p = head;p != null;p = p.next){
list.add(p.val);
}
ListNode retHead = new ListNode(0);
ListNode p = retHead;
for(int i = 0; i < list.size();i++){
if(list.get(i) < x){
ListNode q = new ListNode(list.get(i));
p.next = q;
p = q;
}
}
for(int i = 0; i < list.size();i++){
if(list.get(i) >= x){
ListNode q = new ListNode(list.get(i));
p.next = q;
p = q;
}
}
return retHead.next;
}
}