多一些Aha Time,发现技术|

啊原来是这样呀

园龄:8年3个月粉丝:3关注:9

随笔分类 -  算法刷题之旅

【LeetCode】23.代码随想录系列刷题总结
摘要:0.要点 0.1数组 二分法 双指针 滑动窗口 0.2链表 虚拟头结点 增删指定节点 链表相交 环形链表 0.3哈希和双指针 哈希用于查重,双指针可将时间复杂度降低一个量级 0.4字符串 需要多用模拟思维 KMP算法可以通过对每个字符建立出现位置记录来规避掉 0.5双指针 用于数组、链表、字符串等线
778
0
0
【LeetCode】22.单调栈系列
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.定义 对于一个序列,要求每个元素左/右边第1个比自己大/小的距离差时,就适用单调栈。 单调栈,以普通的栈为基础,只是入栈时要保持栈的单调性,如果新入栈元素会破坏单调性则将栈内原有元素弹栈直到符合单调性时再让新元素入栈。 非常详细,单调栈性
30
0
0
【LeetCode】21.动态规划系列——总结
摘要:1.动态规划五部曲 动规五部曲分别为: 确定dp数组(dp table)以及下标的含义 确定递推公式,必要时借助dp表 dp数组如何初始化 确定遍历顺序 举例推导dp数组 2.题型体系 3.题型分类 基础https://www.cnblogs.com/OhOfCourse/p/17008681.ht
15
0
0
【LeetCode】20.动态规划系列——子序列
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.题型 0.2.要点 子序列:不连续的、不改变相对顺序的子集 子数组:连续的子集 0.3.代码实例 这一类题往往需要画dp表,从而找出状态转移公式。 回文部分要重点练习:双指针+dp 1.最长递增子序列 1.1.问题描述 给你一个整数数组
28
0
0
【LeetCode】19.动态规划系列——买卖股票
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.要点 这一类题的主要思想是,多种状态并行。 1.买卖股票的最佳时机——只买卖一次 1.1.问题描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,
22
0
0
【LeetCode】18.动态规划系列——打家劫舍
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.要点 一小类问题,无专用理论。 1.打家劫舍 1.1.问题描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会
24
0
0
【LeetCode】17.动态规划系列——背包问题
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.背包问题体系结构 参考资料:https://leetcode.cn/problems/last-stone-weight-ii/solution/yi-pian-wen-zhang-chi-tou-bei-bao-wen-ti-5lfv/
285
0
0
【LeetCode】16.动态规划系列——基础
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.概念 算法基础——动态规划 Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直
50
0
0
【LeetCode】15.贪心算法系列
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.概念 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 如果找出局部最优并可以推出全局最优,就是贪心,如果局部最优都没找出来,就不是贪心,可能是单纯的模拟。 贪心算法一般分为如下四步: (1)将问题分解为若干个子问题; (2)找出适
25
0
0
【LeetCode】14.回溯算法系列
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.要点 (0)如果解决一个问题有多个步骤,每一个步骤有多种方法,题目又要我们找出所有的方法,那肯定要穷举,可以使用回溯算法。 (1)回溯是递归的副产品,只要有回溯就会有递归。 (2)回溯法也可以叫做回溯搜索法,它是一种穷举搜索的方式,效率慢
22
0
0
【LeetCode】13.二叉树系列——总结
摘要:1.参考资料 代码随想录 2.知识脉络与题型
7
0
0
【LeetCode】12.二叉树系列——搜索树
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.二叉搜索树Bineary Search Tree 二叉搜索树是一个有序树: (1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)它的左、右子树也
9
0
0
【LeetCode】11.二叉树系列——构造与修改
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.根据前/中/后序遍历结果中的2个来构建树 前提: 前序和后序不能用来构建树,因为不能切割左右子树的范围。 步骤: (1)确认根节点; (2)切割数组; (3)递归构建左右子树; 构造二叉树有三个注意的点: (1)分割时候,坚持区间不变量原
16
0
0
【LeetCode】10.二叉树系列——属性
摘要:总目录: LeetCode系列导航目录 1.判定对称二叉树 1.1.问题描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 链接:https://leetcode.cn/problems/symmetric-tree/ 1.2.要点 对称与否,一看是否都有/无节点,二看值是否相同 1递归
11
0
0
【LeetCode】9.二叉树系列——遍历
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1如何遍历 0.2.如何写递归 三板斧 (1)确定入参和返回值,如果需要搜索全部范围则不需要返回值,如果搜到目标值就需立即返回的话就必须返回值; (2)确定终止条件; (3)确定本层逻辑,包括数据处理和调用自身函数实现递归; 0.3.递归版D
15
0
0
【LeetCode】8.二叉树系列——基础
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.种类 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在最下层,则这棵二叉树为满二叉树。也可以说深度为k,有2^k-1个节点的二叉树 完全二叉树 除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一
19
0
0
【LeetCode】7.栈与队列
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.要点 栈:先进后出 队列:先进先出 双端队列:两端都可以增删 优先队列:大根堆,压入的数据自动排序,较大值在前;小根堆反之 1.用栈实现队列 1.1.问题描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push
22
0
0
【LeetCode】6.双指针系列汇总
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.要点 双指针法基本都是应用在数组,字符串与链表的题目上。 降低时间复杂度,用双指针来提高效率,可降低一级指数复杂度,如三数之和问题中将O(n^2)的时间复杂度降为O(n) 0.2.种类 快慢指针 对撞指针 1.移除数组中的值为val的元素
15
0
0
【LeetCode】5.字符串系列
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.要点 很简单。 字符串可以视作char数组,可以使用索引访问char。 有很多标准库可以用,如可以很方便获得长度。 每个char是一个ASCII数值。 1.翻转字符串 1.1.问题描述 编写一个函数,其作用是将输入的字符串反转过来。输入字
31
0
0
【LeetCode】4.哈希表与部分双指针系列
摘要:总目录: LeetCode系列导航目录 0.理论基础 0.1.要点 哈希表,散列表,HashTable,一种key-value集合,最重要的是其查找速度为O(1); 哈希函数,建立key和哈希地址的映射关系,哈希函数有不同的实现方式; 哈希冲突/碰撞是指不同的key产生的哈希地址重复,有不同的策略处
34
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起