力扣面试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;
    }
}
相关推荐
wfbcg几秒前
每日算法练习:LeetCode 54. 螺旋矩阵 ✅
算法·leetcode·矩阵
一块小土坷垃15 分钟前
最近发现了一款很好玩的SBTI测试的APP
面试·职场和发展·sbti
zjeweler16 分钟前
“网安+护网”终极300多问题面试笔记-2共3-计算机网络相关 - 好淘云
笔记·计算机网络·web安全·面试·职场和发展·护网行动·护网面试
_日拱一卒24 分钟前
LeetCode:206反转链表
算法·leetcode·链表
我不是懒洋洋30 分钟前
【经典题目】链表OJ(轮转数组、返回倒数第k个节点、链表的回文结构)
c语言·开发语言·数据结构·算法·链表·visual studio
We་ct32 分钟前
EventSource & WebSocket & HTTP
前端·javascript·网络·websocket·网络协议·http·面试
黑牛儿36 分钟前
2026 MySQL 面试 100 题: 索引 / 事务 / 锁(答案 + 原理)
android·mysql·面试
小雅痞43 分钟前
[Java][Leetcode middle] 274. H 指数
java·算法·leetcode
挖稀泥的工人15 小时前
AI聊天界面的布局细节和打字跟随方法
前端·javascript·面试
XiYang-DING15 小时前
【LeetCode】Hash | 136.只出现一次的数字
算法·leetcode·哈希算法