力扣面试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;
    }
}
相关推荐
拾光拾趣录4 小时前
基础 | HTML语义、CSS3新特性、浏览器存储、this、防抖节流、重绘回流、date排序、calc
前端·面试
小高0078 小时前
协商缓存和强缓存
前端·javascript·面试
码出极致9 小时前
MySQL 与 MongoDB 深度对比:从数据模型到实战场景的核心差异解析
后端·面试
码出极致9 小时前
Elasticsearch 与 Solr 核心差异深度解析:从架构到场景的实战记忆指南
后端·面试
码出极致9 小时前
RocketMQ 和 Kafka有什么区别
后端·面试
R-G-B10 小时前
【19】万集科技——万集科技嵌入式,校招 一面,二面,面试问答记录
面试·万集科技·万集科技嵌入式面试问答记录·万集科技嵌入式面试记录·万集科技嵌入式面试·万集科技嵌入式一面·万集科技嵌入式二面
独行soc10 小时前
2025年渗透测试面试题总结-15(题目+回答)
python·科技·docker·容器·面试·eureka
转转技术团队10 小时前
「快递包裹」视角详解OSI七层模型
前端·面试
martian66511 小时前
LeetCode算法领域经典入门题目之“Two Sum”问题
人工智能·算法·leetcode·医学影像
AAA修煤气灶刘哥11 小时前
面试官:Spring容器中的bean是线程安全的吗?小心陷阱!!!
后端·面试