力扣面试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;
    }
}
相关推荐
进击的明明5 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent
桃桃乌龙_12 小时前
LangGraph 深度解析:从链到图,把 Agent 的循环画出来
面试
考研保研资料分享12 小时前
地信遥感保研至南京大学南赫:六场考核与跨专业失利复盘
面试
考研保研资料分享12 小时前
物理保研至中科大:固体物理复习、四场面试与科研追问
面试·职场和发展
Rain的Java大神之路12 小时前
别再死磕 MySQL 了:向量数据库与 RAG 生产落地实录(Java 工程师专场)
java·后端·面试
桃桃乌龙_12 小时前
MCP 深度解析:AI 工具层的 USB-C,如何把 N×M 个适配器收敛成 N+M
面试
Nil20813 小时前
leetcode 49字母异位分组
算法·leetcode·哈希算法
鸥梨菌Honevid13 小时前
UVM Sequencer 深度解析:FIFO 深度、req/rsp 应答模型与高频面试坑
面试·职场和发展
用户62228840481913 小时前
站在JDK的角度理解线程池:从execute 到 getTask 一篇讲透
java·面试
考研保研资料分享13 小时前
生态学保研经验:从中央民族大学到上交,科研分工与多校考核(2025)
面试