笔试题-总结
Xavier学长
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一题多解
1、Leetcode 053 最大子序的问题:参考:1、https://zhuanlan.zhihu.com/p/258483932、https://blog.youkuaiyun.com/weixin_41958153/article/details/811313791、遍历的方法:o(n)首先假设我们已经找到了最大连续和子串在数组中的起始位置(i)和结束位置(j),其中i <= ...转载 2019-08-03 12:19:59 · 303 阅读 · 0 评论 -
动态规划系列
状态的定义很关键+状态转移方程动态规划包含三个重要的概念:最优子结构、边界、状态转移方程(思路反过来想,程序正过来写)https://www.sohu.com/a/153858619_466939一、背包问题1、01背包问题01背包的状态转换方程f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] }f[i,j]表示在...原创 2019-06-16 16:00:35 · 248 阅读 · 0 评论 -
递归+回溯
一、 Generate Parentheses补充:深入理解递归的过程https://www.coursera.org/lecture/c-chengxu-sheji/di-gui-diao-yong-de-guo-cheng-3JLR6理解:递归本身实现一种栈的数据结构思路:递归+剪枝开始用分治、递归和回溯的函数,必须要开一个递归的函数_gen()中,left指...原创 2019-08-03 14:46:37 · 273 阅读 · 0 评论 -
二分查找
1、69 sqrt(x)思路一:直接从1到x/2之间遍历,判断是否是平方根的条件是,i*i小于等于x并且(i+1)*(i+1)大于x,则返回i。超时。思路二:(条件是单调)二分查找法:初始化i=0,j=x,mid=0。进入循环,找到中间值mid=(i+j)/2,如果mid>x/mid,表示mid不是平方根,且数值过大,则j=mid。如果mid小于等于x/mid,则判断(mid+1)&...原创 2019-08-04 18:48:09 · 218 阅读 · 0 评论 -
DFS与BFS
DFS推荐使用递归的写法一、判断有向图是否有环leetcode 207方法一:拓扑排序(Kahn 算法)具体到拓扑排序,每一次都从图中删除没有前驱的顶点,这里并不需要真正的做删除操作,我们可以设置一个入度数组,每一轮都输出入度为 00 的结点,并移除它、修改它指向的结点的入度(-1−1即可),依次得到的结点序列就是拓扑排序的结点...原创 2019-07-31 22:22:01 · 819 阅读 · 0 评论 -
贪心算法
一、跳跃游戏-(leetcode55)贪心策略是我们每次都选取最优的策略,然后前面已经选好了的就不用管了。这个贪心的方法是,我们使用一个变量reach 保存当前能达到的最后位置索引,那么在每个位置的时候判断这个位置能不能到达,即位置的索引大于这个reach,说明前面无论怎么走也走不到这个位置,返回False。如果这个位置可以到达,要维护一下这个reach,更新策略是:当前索引位置+这个数字...原创 2019-08-11 14:33:43 · 211 阅读 · 0 评论 -
并查集
LeetCode-Python-547. 朋友圈一、并查集class Solution: def findCircleNum(self, M: List[List[int]]) -> int: hang = len(M) lie=len(M[0]) uf=UnionFind(M) ...原创 2019-08-30 18:39:15 · 166 阅读 · 0 评论
分享