- SQL题还是不太熟牛客平台,不允许把在select语句中定义的as别名直接在select语句中用
- 怎样制作临时表,with的用法
- date——format 和date-add不太熟
- 有返回值的都应该返回,否则不能通过编译
- 求素数 i*i的边界条件应该=x
- 高精度加法
1.要注意数组永远让打的+小的数组 2.如果最后还有一个进位1要加上去!
- 双指针——判断子序列
1.判断i<n,否则a数组有可能越界 到0那去
- 双指针 记得那个二维的表格,所以就有动态规划的依据
1、有些遗忘
- 最长不重复子串
1、直接在原始字符串上开窗!
- 离散化 是为了更好的应用前缀和
- 合并区间
1、除了那些该记住的还有:它对每个区间就两种可能!要么重合,要么分隔,分隔的加入进去就行了。第一个迎头的区间肯定不可能一下子就加入,而要观察一轮
- 求第k小的数快排思想 为什么区间长度是j-l+1?
- 判断异或的最大值,tire树!如何将数字用tire树表示
- 联通块注意输入的要是在一个集和内就不用改变了 continue
- 模拟堆 为什么从n/2 往上 到i --i排序,因为越靠近树的根,节点的值越小,down操作要和左右节点比较!所以底下不能是空空如也!
删除堆顶,因为删除一维数组的第一个元素很麻烦,但是尾元素却很简单,因此选择用尾元素覆盖堆顶,然后删除尾元素,再down下沉 堆顶元素是1,队尾元素是size up和down的一直是下标
- dfs 的数据结构是栈 路径保存是path 虽然看着像一棵树,但是我们存的时候只会存一条路径,我们回溯的时候就没了。不需要额外开空间
- 图的深度搜索为什么不需要回溯,因为只遍历一遍,不需要多次 !最重要的是树的dfs是带值的,那么一定要知道这个值是什么含义!
以u为根的子树,所拥有的节点的数量!那么 sum就是这个数量! sum的初始值为1,因为还要加上它本身! res是u它的子树中最大的那个所拥有的节点数目!
- 有效括号,回溯!回溯就是求所有符合要求的方案!
如何限定!加一个判断就可以
- dfs想象你正在走一个迷宫,如何才能不陷入循环,标记那些已经走过的路,如何能退出,用一根绳子记录你走过的路,然后把你倒退着走出来
- BFS想象你往湖里投了一枚石子,波纹散开 VISITED的数组如此重要,防止我们陷入一遍又一遍的循环 可达性就是看看从原点出发是否vis特的
- 基本架构一个for循环,遍历单点的所有邻边,如果这个点没有被遍历过dfs这个点
如果遍历过continue!
- 拓扑排序dfs版! 对每一个节点做到dfs遍历!
- dfs判断是不是有环
-
组合数字2 谁说不需要回溯!不回溯怎么恢复状态继续往前搜,图因为只遍历一次才不用。遍历和生成!