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

相关推荐
Jooolin4 分钟前
Flask 入门到实战(2):使用 SQLAlchemy 打造可持久化的数据层
后端·flask·ai编程
Z_haha19 分钟前
js模块化之commonjs与es6模块化
前端·javascript·面试
小远同学33 分钟前
java Mavlink连接模拟器 开源软件Mission Planner简单使用(一)
后端
Jooolin33 分钟前
Flask 入门到实战:手把手带你构建第一个 Python Web 应用
后端·flask·ai编程
红鼻子时代1 小时前
Django RBAC项目后端实战 - 03 DRF权限控制实现
后端·python·django·rabc
语落心生1 小时前
Mcp+Agent - 自动化BI报表实现方案探索
后端
穗余1 小时前
WEB3全栈开发——面试专业技能点P5中间件
中间件·面试·职场和发展
liujing102329291 小时前
Day09_刷题niuke20250609
java·c++·算法
shark_chili1 小时前
来聊聊JVM中安全点的概念
后端
无奈何杨1 小时前
事件时间驱动的策略版本管理:风控系统中的关键设计抉择
java·后端·架构