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、我们也可以思考下怎么不使用额外的链表来实现。

相关推荐
geovindu19 分钟前
java:Abstract Factory Pattern
java·开发语言·后端·设计模式·抽象工厂模式·创建型模式
geovindu23 分钟前
java: Factory Method Pattern
java·开发语言·后端·设计模式·工厂方法模式·创建型模式
voicelen26 分钟前
一通电话背后有多少角色?我拆了 Voicelen 的调度台给你看
后端
z小猫不吃鱼31 分钟前
模型剪枝经典论文精读:Channel Pruning for Accelerating Very Deep Neural Networks
算法·机器学习·剪枝
用户80172204163932 分钟前
BarQode:C# 条码二维码生成库
后端
考虑考虑37 分钟前
kafka4安装
后端·kafka·自动化运维
orient44 分钟前
慢查询优化 10 招:从 EXPLAIN 到索引重建
后端
njsgcs1 小时前
已知链中心距用节数算中间电机摆放位置 常量弧长 三链轮弦长模型算法
算法
用户40966601317511 小时前
MySQL 事务与锁机制实战:从隔离级别到死锁排查
后端
黄敬峰1 小时前
从“聊天”到“做事”:构建你的第一个高性能 LangChain Agent
面试