力扣面试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;
    }
}
相关推荐
he___H25 分钟前
面试场景题
面试·职场和发展
ricardo197327 分钟前
防抖节流进阶 + requestAnimationFrame:滚动与输入场景的性能优化
前端·面试
YL200404261 小时前
071字符串解码
数据结构·leetcode
自进化Agent智能体1 小时前
拆解Hermes会话循环:一个目标如何变成可执行的代码
面试
是小王同学啊~3 小时前
Kafka 面试通关笔记:高频八股 + 生产实战 + 追问链路(上)
笔记·面试·kafka
z200509303 小时前
今日算法(回溯子集)
数据结构·算法·leetcode
Hesionberger3 小时前
巧用异或找出唯一数字(多解)
java·数据结构·python·算法·leetcode
Komorebi_99993 小时前
Day6:微调 vs RAG 场景区分(面试高频)
面试·职场和发展
英俊潇洒美少年3 小时前
Vue2 $set 深度解析 + 批量更新全套优化方案(原理+实战+踩坑+面试)
面试·职场和发展·wps
Xzh04233 小时前
Redis黑马点评 实战复盘与面试高频考点详解
java·数据库·redis·面试