力扣面试150 分隔链表 模拟

Problem: 86. 分隔链表

👨‍🏫 参考题解

Code

Java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */

class Solution {
    public ListNode partition(ListNode head, int x) {
        // 创建两个哑节点,用于存储小于x和大于等于x的节点
        ListNode small = new ListNode(0);
        ListNode smallHead = small; // small链表的头指针
        ListNode large = new ListNode(0);
        ListNode largeHead = large; // large链表的头指针

        // 遍历原始链表
        while (head != null) {
            if (head.val < x) {
                // 如果当前节点值小于x,将该节点连接到small链表
                small.next = head;
                small = small.next; // 更新small指针到当前节点
            } else {
                // 如果当前节点值大于等于x,将该节点连接到large链表
                large.next = head;
                large = large.next; // 更新large指针到当前节点
            }
            // 移动到下一个节点
            head = head.next;
        }

        // large链表的最后一个节点需要指向null,以防止形成循环链表
        large.next = null;

        // 将small链表的最后一个节点指向large链表的头节点
        small.next = largeHead.next;

        // 返回small链表的头节点,即分隔后的新链表的头节点
        return smallHead.next;
    }
}
相关推荐
Heo32 分钟前
怎么保证缓存和数据库一致性?
前端·后端·面试
众人皆醒我独醉2 小时前
调和循环:kubectl apply 之后发生了什么
面试·llm·gpu
众人皆醒我独醉2 小时前
从 Spec 到资源:Predictor/Transformer/Explainer 如何变成 Deployment
面试·llm·gpu
面试鸭2 小时前
Codex 跑进法务部,周活居然暴涨了 108 倍???
后端·面试·求职
程序员爱钓鱼5 小时前
Rust const泛型详解:让常量也成为泛型参数
后端·面试·rust
黄敬峰5 小时前
一文搞懂 Next.js + AI 全栈开发:为什么它是 2026 年最强的 AI 全栈框架
面试
吴声子夜歌6 小时前
Java面试——数据结构(一)
java·数据结构·面试
wabs6667 小时前
关于栈【力扣1047. 删除字符串中的所有相邻重复项的思考】
数据结构·c++·算法·leetcode··代码随想录
吴声子夜歌7 小时前
Java面试——基础
java·开发语言·面试
fb_123458 小时前
Shell 脚本从 0 到精通|脚本规范 + 变量 + 数值运算 + 条件测试(可直接复制,面试必备)
chrome·面试·职场和发展