LeetCode第86题分隔链表

继续打卡算法题,今天学习的是第86题分隔链表,这道题目是道中等题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些提升。

分析一波题目

本题,我们将使用两个链表,一个记录小于x的节点,一个记录大于等于x的节点,最后合并两个链表就解决了,这个办法是容易想到的方法。

本题解题技巧

1、构造两个新链表分别记录小于x的节点和大于等于x的节点。

编码解决

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) {
        //用两个链表来做 最后合并
        ListNode small = new ListNode(0);
        ListNode smallHead = small;
        ListNode large = new ListNode(0);
        ListNode largeHead = large;
        while (head != null) {
            if (head.val < x) {
                small.next = head;
                small = small.next;
            } else {
                large.next = head;
                large = large.next;
            }
            head = head.next;
        }
        large.next = null;
        small.next = largeHead.next;
        return smallHead.next;
    
    }
}

总结

1、通过构造两个新链表分别记录小于x的节点和大于等于x的节点。这是最容易想到的办法。

2、我们也可以思考下怎么不使用额外的链表来实现。

相关推荐
爱读源码的大都督11 小时前
DeepSeek面试官问:生产RAG系统回答不准确,该如何定位和优化?这样回答,能让面试官当场给你Offer!
java·后端·python
hetao173383711 小时前
2026-09-08 hetao1733837 的刷题记录
c++·算法
C++ 老炮儿的技术栈11 小时前
MFC CPtrArray的用法
开发语言·数据结构·c++·算法·mfc·c
杨运交11 小时前
[069][公共模块]Spring Boot 全局异常处理与参数校验实战(下):校验异常精细化处理与 WebFlux 适配
java·spring boot·后端
小鱼爱吃草灬灬11 小时前
实时面试辅助排查清单:音频来源、问题输入与上下文
面试·职场和发展·音视频
weixin_4462608511 小时前
CABAL:用于追踪同行评审中合谋投标影响的多智能体仿真框架
人工智能·算法·机器学习
不会就选b11 小时前
算法日常・每日刷题--<贪心>6
数据结构·算法·leetcode
Andya_net12 小时前
Spring Boot | 条件注解完全指南:从 @Conditional 到 @ConditionalOnExpression 的原理、实践与避坑
spring boot·后端·python
青山木12 小时前
Hot 100 --- 跳跃游戏 II
java·数据结构·算法·leetcode·贪心算法
ly768912 小时前
Spring 中的 @Configuration 与 @Component 差异:为何代理时机决定 Bean 生命周期行为
java·后端·spring·注解·代理·bean生命周期