这个题是让你把比x小的节点都挪到大于等于x节点前面去,注意还要保证每个节点的初始位置。
那么我们可以先找到第一个>=x的节点p,然后p后面的所有节点,都插入到p之前即可
我的代码写复杂了= =
class Solution {
    public ListNode partition(ListNode head, int x) {
        ListNode p = head;
        boolean flag = false;
        if (p != null && p.val >= x) flag = true;
        while (p != null && p.next != null) {
            if (flag && p.next.val < x) {
                ListNode tmp = p.next;
                p.next = p.next.next;
                head = listNodeInsert(head, tmp, x);
                continue;
            } else if (p.next.val >= x) {
                flag = true;
            }
            p = p.next;
        }
        return head;
    }
    public ListNode listNodeInsert(ListNode head, ListNode node, int x) {
        ListNode p = head;
        if (p.val >= x) {
            node.next = p;
            return node;
        }
        while (true) {
            if (p.next == null) {
                p.next = node;
                node.next = null;
                break;
            } else if (p.next.val >= x) {
                node.next = p.next;
                p.next = node;
                break;
            } else {
                p = p.next;
            }
        }
        return head;
    }
}原文:https://www.cnblogs.com/acbingo/p/9404586.html