86. 分隔链表

xkrivzooh2023年3月1日
小于 1 分钟

86. 分隔链表

题目:

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。

你应当 保留 两个分区中每个节点的初始相对位置。

leetcode地址:https://leetcode.cn/problems/partition-list/open in new window

solution

class Solution {
    public ListNode partition(ListNode head, int x) {
        ListNode virtualNode1 = new ListNode(-1);
        ListNode p1 = virtualNode1;
        ListNode virtualNode2 = new ListNode(-1);
        ListNode p2 = virtualNode2;

        ListNode p = head;
        while(p != null) {
            if (p.val >= x) {
                p2.next = p;
                p2 = p2.next;
            } else {
                p1.next = p;
                p1 = p1.next;
            }
            // 断开原链表中的每个节点的 next 指针, 避免有环
            ListNode temp = p.next;
            p.next = null;
            p = temp;
        }
        p1.next = virtualNode2.next;
        return virtualNode1.next;
    }
}
上次编辑于: 2023/3/1 15:35:27
Loading...