跳至主要內容

86. 分隔链表

专题leetcodeleetcode小于 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;
    }
}

版权申明

本站点所有内容,版权均归https://wenchao.renopen in new window所有,除非明确授权,否则禁止一切形式的转载协议

打赏

微信 支付宝

上次编辑于:
打赏
给作者赏一杯咖啡吧
您的支持将是我继续更新下去的动力
微信微信
支付宝支付宝