数组链表 双指针秒杀链表技巧 双指针秒杀数组技巧 滑动窗口算法框架模板 二分搜索算法框架模版 前缀和数组 差分数组 栈和队列 单调栈技巧 单调队列技巧 树 二叉树技巧 回溯子集分割回文串 回溯解题技巧 动态规划 动态规划解题技巧 贪心算法 贪心技巧 排序算法 10大经典排序算法 ACM模式 ACM模式 必考题 华为手撕必考 真题模拟 美团开发岗
准备篇 面试过程 Redis篇 缓存场景 数据库篇 调优 事务 集群 框架篇 Spring MyBatis Elasticsearch MongoDB 面试全攻略 ^xp824k Neo4j 面试指南 Dubbo 微服务篇 SpringCloud 分布式系统业务问题 消息中间件篇 RocketMQ RabbitMQ Kafka 常见集合篇 ArrayL
数组有序即可用双指针! 快慢指针 原地修改(链表反转(头反转【pre,cur,原地循环交换】、中间局部反转【找前、断中、反中、连后】、k个一组反转【计算长度、初始化前驱和头尾节点、循环取K个、逐组反转、更新前驱和尾结点】)) 左右指针和快慢指针: 左右指针,相向而行或者相背而行 快慢指针,同向而行,一快一慢 数组中索引作为指针 滑动窗口 left 指针在后,right 指针在前,中间
应用场景寻找一个数、寻找左侧边界、寻找右侧边界。这三种场景使用统一的框架,while 条件统一用 <=,边界更新统一用 mid ± 1(mid=left + (right - left) / 2,等价于(left + right) / 2,防止整形溢出,便于记忆。 有序数组旋转找目标值:有序数组旋转后对半局部有序,先看 mid 命中没有;再判断哪半边有序;最后看 target 在不在有序那
应用场景主要用来解决子数组问题,比如让你寻找符合某个条件的最长/最短子数组 框架模板基于这个框架,遇到子串/子数组相关的题目,你只需要回答以下三个问题: 1、什么时候应该移动 right 扩大窗口?窗口加入字符时,应该更新哪些数据?2、什么时候窗口应该暂停扩大,开始移动 left 缩小窗口?从窗口移出字符时,应该更新哪些数据?3、什么时候应该更新结果? 123456789101
应用场景主要适用的场景是原始数组不会被修改的情况下,前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。 框架模板12345678910111213141516171819class NumArray { // 前缀和数组 private int[] preSum; // 输入一个数组,构造前缀和 public NumArray(int[] nums) &#
二叉堆详解
二叉堆(Binary Heap)技术详解目录 二叉堆的性质 最常见的应用:优先级队列 另一种应用:堆排序 一、二叉堆的性质1.1 基本定义二叉堆(Binary Heap)是一种特殊的完全二叉树数据结构,满足堆性质(Heap Property)。它是实现优先级队列和堆排序算法的基础。 核心特征: 完全二叉树结构:所有层级都被填满,除了最后一层,且最后一层的节点从左到右填充 堆性质:每个节点的值
多叉树遍历算法详解
多叉树遍历算法详解 Java 实现 - 递归遍历(三种)+ 层序遍历(三种) 📖 目录 树结构定义 递归遍历 前序遍历 后序遍历 深度优先遍历(DFS) 层序遍历 标准层序遍历 按层遍历 之字形层序遍历 完整代码 测试结果 🌲 树结构定义123456789101112131415// 多叉树节点类class TreeNode { int val;