- 博客(5)
- 收藏
- 关注
原创 Leetcode刷题总结--基本图算法
Leetcode刷题总结基本图算法图的问题算是比较复杂的类型的题目了,我觉得需要把握住的有几点。首先是要学会构建图,如何从题目给你的信息中,抽象出图的关系。其次是要会表示图,邻接表,邻接矩阵至少要会(特定题目条件下要使用特殊的数据机构)然后是要会遍历图,DFS, BFS是最基本的算法,很多图的题目都是从遍历而来的。最后,要回一些特定问题的特定解决方法。图的问题,使用遍历方法,基本都可以得到简单问题的解,但是当数据规模上去以后,这种遍历问题很容易变成NP问题,此时就要考虑使用特定的算法或者思想,达
2020-07-13 23:24:29 1746 1
原创 Leetcode刷题总结--动态规划(一)
Leetcode刷题总结动态规划问题(字符串)动态规划是一种思想,本质上是用来解决递归中的低效性。在递归解决问题的过程中,会将问题分解为许多小问题,但是很多小问题会被多次重复计算,斐波那契数列的递归过程 就是一个很好的说明。因此,如果在递归过程中,将子问题处理结果记录下来,对递归树进行剪枝,从而优化时间,这一种方法又叫做记忆化搜索,也是动态规划的一种实现方式。然后,如果我们直到原问题和子问题之间的关系,那么我们可以通过先求解规模小的子问题,然后通过转移方程反推原问题,这就是动态规划的思想。个人认
2020-06-21 00:43:51 342 1
原创 Leetcode刷题总结--回溯法
Leetcode刷题总结回溯法回溯法的本质就是在递归过程中将生成和检查过程有机结合起来,从而减少不必要的枚举,是一种系统性的搜索算法。只要可以把问题分解为不太多的步骤,每个步骤含有不太多的选择,均可以使用回溯法(有超时的风险)。回溯法从根节点出发,以深度优先搜索方式搜索整个解空间。回溯法以这种工作方式递归地在解空间中搜索,直到找到所要求的解或解空间所有解都被遍历过为止。伪代码:void dfs(int curr_state){ if(到达基例) return; // 1. 进行尝试操作
2020-06-19 00:22:33 312
原创 Leetcode刷题总结--单调栈
Leetcode刷题总结单调栈从这个数据结构的名字就可以看到,数据在栈中是单调的,栈顶永远都是最大/最小值。那么,这样一个数据结构有什么用呢?这里作者先把结论说出来,然后举一个例子说明。寻找每个元素左右距离自己最近且比自己大/小的元素。假设目前要维护一个单调递增的栈,输入序列为 8,3,1,2,5(下面的单调性是我自己这样认为的,即单调递增的栈,栈顶是最大的,主要是为了说明单调栈的结构特点,当然大家也可以觉得栈底是最小的,都可以)输入8时,栈为空,直接入栈,此时栈内元素为 (8)。(注:左
2020-06-18 00:08:09 416
原创 Leetcode刷题总结--前缀和
Leetcode刷题经验前缀和:前缀和常用与求解子数组的问题,最常见的就是子数组求和问题。定义pre[i]pre[i]pre[i]为数组从0~i位置的和,sum(i,j)sum(i,j)sum(i,j)表示从i位置到j位置的子数组的和,则有sum(i,j)=pre(j)−pre(i)sum(i,j) = pre(j) - pre(i)sum(i,j)=pre(j)−pre(i)根据上述的推论可以很轻易的求解出任意一段子数组的和1. Leetcode560 和为k的子数组题目描述:给定一个整数数组
2020-06-16 11:50:00 565
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人