Home

后缀数组:排名为i的后缀的起始下标

摘要: 后缀数组原理与实现 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 背景一个长度为 n 的字符串 s,共有 n 种后缀。现在想对这 n 个后缀排序,将排序结果保存在一个数组 sa 中。sa[i

跳表

摘要: 跳表的设计与实现 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings $0 跳表背景与哈希表、平衡树、Trie类似,跳表也可以看成是一种自带索引的数据结构(索引结构)。即根据给定的 key,可以快

在模拟过程中找出循环节

摘要: 循环节优化模拟;倍增优化DP 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在模拟的过程中,如果出现了循环节,就可以直接跳过很多中间的模拟步骤。有时这种循环节是现成已知的,例如文章 通过已知

多重背包及其二进制划分优化

摘要: 多重背包 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings $0 多重背包问题描述有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。 求解

DAG上的DP (拓扑序DP),无权 DAG 的最长路径

摘要: 拓扑序DP解无权DAG上的最长路径问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 对于一个 DAG,我们可以进行拓扑排序,一些动态规划的问题,其阶段的推导过程呈现为一个 DAG,形成了图

【搜索难题】力扣956-最高的广告牌

摘要: 非常综合的搜索题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们看一个综合性很强的搜索问题,会遇到搜索中的多种优化方法,首先比较关键的是找到剪枝方法,本题最终通过适当维护变量进行可行

倍增优化DP

摘要: 倍增优化DP,减少状态个数 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 倍增法 中我们了解了倍增法的原理与实现。本文我们以力扣 466 来看一下倍增优化 DP,最后我们解决一个非常

DAG典型应用-活动网络

摘要: AOV、AOE 两种活动网络。关键路径算法 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings $0 活动网络活动网络(activity network)是一种 DAG,可以用来描述生产计划、施工

有向图的必经点,支配树

摘要: 有向图的必经点,支配树 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们看一个从业务场景中抽象出来的图论的问题:有向图的必经点。给定有向图上的两个点 S 和 T,从

最近公共祖先问题

摘要: 最近公共祖先问题的三种解法,以及一些应用 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 树上倍增 中,我们学习了树上倍增的思想。树上倍增主要解决从某个节点向上找第

线段树:区间修改(更改为定值)、区间最值查询

摘要: 线段树,区间修改与区间查询,原理与实现,RMQ 问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 线段树和树状数组:单点修改、区间查询,区间求和问题 中,我们学习了带单点修改、区间

稀疏表(倍增优化DP):区间最值问题

摘要: 元素不变的区间最值问题,稀疏表 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 给定一个数组,其中的元素可以修改,要查询数组中某个区间的和。过程中需要维护元素修改的操作,并且要高效查询区间的和

倍增法

摘要: 倍增法原理、代码模板、例题与应用场景 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings $1 倍增法算法思想在递推状态的时候,只递推状态空间中 2 的幂次,当需要求其它位置的时候,利用以下性质,

增删改后的最大子数组和

摘要: 本文介绍最大子数组和的一类变种:可以增删改的情况 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 最大子数组和的三种解法 中,我们详细拆解了最大子数组和这个问题,并且了解到这个问题有三

【贪心难题】力扣1505-最多K次交换相邻数位后得到的最小整数

摘要: 贪心+树状数组 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们看一个贪心的问题,这是第 196 场周赛 D 题。亮点是在执行贪心策略时需要一些预处理信息,这些预处理信息是通过树状数组

线性探测解决哈希冲突

摘要: 线性探测法 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 哈希表在发生冲突时,有开散列法和闭散列法两种主流的处理方法。线性探测法是闭散列法中比较简单的一种。本文我们通过力扣 945,来看一

自定义排序题目清单:定义 Cmp 结构体并重载 () 运算符

摘要: 题目汇总,自定义元素的比较方法,定义 Cmp 结构体病重载 (),比较逻辑中可能含复杂的判断逻辑,Cmp 的实例可能持有额外状态。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在 C++

【堆贪心】力扣1642-可以到达的最远建筑

摘要: 一个堆贪心的问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 题目 1642. 可以到达的最远建筑 给你一个整数数组 heights ,表示建筑物的高度。另有一些砖块 bricks 和梯

贪心-分拆问题

摘要: 一些用贪心解决的分拆类问题, 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 分拆类问题汇总 中我们总结了分拆类问题。这类问题没有固定的算法,要根据具体的问题看,本文我们看一下适用贪心

贪心:不限操作方式的重排问题

摘要: 几个用贪心解决的重排问题场景 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 对于一个数组来说,对其元素重新排序是最重要的操作。如果排序的依据就是从小到大,那么就是常规的排序算法。还有很多重排

子序列匹配

摘要: 子序列匹配问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 字符串精确匹配 中我们学习了字符串精确匹配的问题,本文我们看一下子序列匹配问题,涉及到贪心、动态规划、序列自动机等算法。

贪心:构造性问题

摘要: 基于贪心的构造问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 构造是算法中广泛使用的一类技巧。其中贪心地构造是比较考验灵感的问题,没有定式化的方法论。本文整理了一些这类问题,共 11 题

贪心-删数,拼数,选数,改数

摘要: 贪心算法解决数字构造问题:删数、拼数、选数、改数 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文罗列一下力扣上的一大类问题,也就是贪心算法解决的数字构造问题,包括删数、拼数、选数、改数等

力扣23-合并K个升序链表

摘要: 合并 K 个升序链表,堆与分治 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 今天我们继续看一道经典题(陈题),leetcode第23题,合并 K 个升序链表。 本题有两个主流解法: 算法

【二分难题】力扣4-寻找两个正序数组的中位数

摘要: 各种二分 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文看一个比较难的二分的问题。在两个有序数组中找中位数。可以基于两个数组有序的性质直接在整个区间范围二分。也可以对中位数的值进行值域二

数据压缩

摘要: 本文总结了 leetcode 上的数据压缩相关的题目 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 数据压缩的背景 相似的概念:序列化,序列化/反序列化,编码/解码(加密/解密),压缩/解

Java核心技术1-GUI事件模型

摘要: 本文是《Java核心技术 10th》中关于 GUI 事件模型的要点总结。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文是《Java核心技术1》第10版 Chap13 中关于 GUI 事

Java核心技术1-GUI基础

摘要: 本文是《Java核心技术 10th》中关于 GUI 基础的要点总结。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文是《Java核心技术1》第10版 Chap13 中关于 GUI 基础的

python虚拟机相关资源

摘要: 本文介绍一些 Python 虚拟机相关的资料 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 《Python源码剖析》 2008 《Python3源码剖析》开源电子书项目 https://f

【STL】字典序比较 lexicographical_compare

摘要: 本文介绍在 C++ STL 中的字典序比较方法 lexicographical_compare 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文介绍在 C++ STL 中的字典序比较方法

奇数位置元素排在偶数位置元素之前

摘要: 线性结构上的一种常见操作 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们来看一个在线性结构上非常常见的操作,就是将奇数位置的元素排在偶数位置的元素之前。 首先我们考

【分治难题】力扣932-漂亮数组

摘要: 一个 O(N) 分解 O(1) 合并的分治法 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 各位好,本文我们看一个非常漂亮的分治法。此前我们了解过一些分治法解决的问题,基本

【C++17】string_view

摘要: 本文介绍 C++17 中的一个字符串相关的新特性 string_view,主要参考《C++17 STL Cookbook》$7-3 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文介绍 C

逆向思维

摘要: 本文梳理了 leetcode 上用逆向思维的思想解决的问题。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文梳理力扣上 9 道用逆向思维的思想解决的问题,总览如下: 1558. 得到目

【设计难题】力扣895-最大频率栈

摘要: 基于链表+哈希表解决与频数相关的设计问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 各位好,本文我们来看一个设计问题。需求与频数相关,具体地就是在栈的基础上,push 的操作不变,pop

leetcode模拟问题汇总

摘要: 模拟类的题目总结 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 数组或字符串上的模拟(1) 转换 38. 外观数列 273. 整数转换英文表示 1089. 复写零 (2) 其它 75

《概率与计算》

摘要: 《概率与计算》这本书 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 这是一个挖坑贴,随机算法是大数据算法中的重要的算法,《概率与计算》是讲随机算法的书中风评比较好的,此外还

【贪心难题】力扣1585-检查字符串是否可以通过排序子字符串得到另一个字符串

摘要: 贪心 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 各位好,本文我们来看一个贪心的问题。这是第 206 场周赛 D 题,是限制操作方式的数组重排的场景。 $1 题目 1585. 检查字符串是

k短路问题:AStar启发式搜索

摘要: AStar 算法经典问题:k短路 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 给定一个有向图,求 S 到 T 的最短路径长度是图算法中的基本问题,算法很多,参考文章 带权图最短路径算法与实

双向搜索

摘要: 从起点和终点同时一层一层地搜索。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在一些从起点向终点搜索的问题中,如果采用 BFS 的方式一层一层搜的话,层数越多,则每一层要搜索的就越多。 假

【搜索难题】力扣679-24点游戏

摘要: 最经典的 24 点判定问题。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 各位好,1024 快到了,各公司的程序员的活动也都出来了,力扣也不例外,出了一个参与感还挺强的活动。不过活动说明可

Trie题目汇总

摘要: Trie 的题目总结 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings Trie 基本功能的思想和实现参考文章:Trie 题目 备注 208. 实现 Trie (前缀树)

01Trie

摘要: 01Trie 的实现,附代码模板和应用 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 Trie 中我们了解了 Trie 的原理与实现。如果 Trie 的节点只含有 0, 1 这两种值

【搜索难题】力扣282-给表达式添加运算符

摘要: 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文看一个复杂的搜索题。亮点在于在 DFS 的过程中维护复杂的状态信息:用类似单调栈的逻辑维护表达式符号和值。 $1 题目 282. 给表达式

拓扑排序的存在性和唯一性;建图的CornerCase

摘要: 建图的各种 Corner Case 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们通过一个拓扑排序的应用问题,看一下在建图时可能遇到的各种 Corner Case。此外本题还有一个值

迭代加深

摘要: 迭代加深的思想与例题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings $1 迭代加深的思想和算法DFS 回顾DFS 的逻辑是每次选定一个分支,不断深入,直到达到递归边界才回溯。这种方法退域很多

【搜索难题】力扣1263-推箱子

摘要: 搜索难题,推箱子问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们看一个很有挑战性的搜索问题,算法的框架是以 BFS 为核心的最短路径。但是有两个难点: 在推 BFS 的过程中,

双端队列BFS

摘要: 基于双端队列的 BFS 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 带权图最短路径 中我们全面学习了带权图最短路径的算法,其中 BFS 是一类非常重要的算法。但是常规的 BFS 只

离散化

摘要: 离散化的原理和代码模板 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 离散化属于排序算法的应用,目的是把无穷大集合中的若干元素映射为有限集合,以便于统计。 很多时候,问题的范围是定义在整数集

【搜索难题】力扣913-猫和老鼠

摘要: 本文详细拆解 leetcode 913-猫和老鼠,主要涉及对抗搜索与minimax、记忆化搜索、染色 BFS 等算法。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 今天分享一个对抗搜索的问