分类 算法笔记 中的文章

单调栈

由于数据在栈内是单调递增或单调递减的,单调栈适合用来找出数组中第一个大于或小于某个元素的场景。元素出栈后,再根据题意对出栈元素进行处理,更新数据至result。 标准模板 第一个for循环内循环输入数组, 第二个for循环维持栈内单调特性,不满足单调的元素依次出栈 第一个for循环内对元……

阅读全文

拓扑排序(选课)

207. 课程表 - 力扣(LeetCode) 思路 课程之间的依赖关系可以用图来表示 顶点:课程 边:有向的边,起点是前置课程,终点是后置课程 这种图叫做AOV(Activity On Vertex)网络,字面意思就是边代表了节点之间的活动的先后关系。 按照题意,这个图是无环的(课程不能循环依赖),也就是D……

阅读全文

优势洗牌(田忌赛马)

870. 优势洗牌 - 力扣(LeetCode) 思路 将nums1(自己的马)进行升序排序,得到下等马->上等马的序列 贪心策略 若某个位置上自己的马比对手的马强,由于已经排过序了,已经是最下等的马了,因此使用这匹马 若某个位置上自己的马比对手的马弱,将该下等马放到最后的位置(对手的上等马的位……

阅读全文

数位dp

题目特征 要求统计满足一定条件的数的数量(即,最终目的为计数,若要结果则只能回溯爆搜得到); 这些条件经过转化后可以使用「数位」的思想去理解和判断; 输入会提供一个数字区间(有时也只提供上界)来作为统计的限制; 上界很大(比如 10^{18}),暴力枚举验证会超时。 思路 从高到低枚举每一位,……

阅读全文