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

相关推荐
Csvn6 小时前
📊 SQL 入门 Day 19:事务与隔离级别
后端·sql
面试鸭6 小时前
Anthropic 让 Claude 接了 CI 值班的第一班,人剩下的是写规则和合 PR
后端·面试
小强19887 小时前
useRef 到底用来干什么?不止获取 DOM 元素
后端
地平线开发者7 小时前
量化为什么会有损失:从量化误差到精度下降
算法
大勇前进7 小时前
React Hooks 常见 5 大坑:写完代码疯狂 Bug,避坑总结
后端
颜进强7 小时前
04 - 一张图看懂 OpenSpec 变更的一生:从创建到归档
前端·后端·ai编程
Cobyte7 小时前
Claude Code 的 Task System 的实现原理
后端·aigc·ai编程
小强19887 小时前
useEffect 完整使用指南:依赖数组、闭包陷阱、清理函数实战
后端
智驭未来掌门人7 小时前
在windows下快速搭建go2rtc流媒体平台
后端
大白807 小时前
为什么不要滥用 useMemo 和 useCallback?过度优化反而更卡
后端