3.30蚂蚁笔试

  1. SQL题还是不太熟牛客平台,不允许把在select语句中定义的as别名直接在select语句中用
  2. 怎样制作临时表,with的用法
  3. date——format 和date-add不太熟
  4. 有返回值的都应该返回,否则不能通过编译
  5. 求素数 i*i的边界条件应该=x
  6. 高精度加法 

     1.要注意数组永远让打的+小的数组   2.如果最后还有一个进位1要加上去!

  7. 双指针——判断子序列

     1.判断i<n,否则a数组有可能越界 到0那去

  8. 双指针   记得那个二维的表格,所以就有动态规划的依据 

     1、有些遗忘

  9. 最长不重复子串 

     1、直接在原始字符串上开窗!

  10. 离散化 是为了更好的应用前缀和

     

  11. 合并区间  

     1、除了那些该记住的还有:它对每个区间就两种可能!要么重合,要么分隔,分隔的加入进去就行了。第一个迎头的区间肯定不可能一下子就加入,而要观察一轮

  12. 求第k小的数快排思想 为什么区间长度是j-l+1?

     

     

     

  13. 判断异或的最大值,tire树!如何将数字用tire树表示
  14. 联通块注意输入的要是在一个集和内就不用改变了 continue
  15. 模拟堆 为什么从n/2 往上 到i --i排序,因为越靠近树的根,节点的值越小,down操作要和左右节点比较!所以底下不能是空空如也!

     删除堆顶,因为删除一维数组的第一个元素很麻烦,但是尾元素却很简单,因此选择用尾元素覆盖堆顶,然后删除尾元素,再down下沉   堆顶元素是1,队尾元素是size  up和down的一直是下标

  16. dfs 的数据结构是栈   路径保存是path  虽然看着像一棵树,但是我们存的时候只会存一条路径,我们回溯的时候就没了。不需要额外开空间  
  17. 图的深度搜索为什么不需要回溯,因为只遍历一遍,不需要多次  !最重要的是树的dfs是带值的,那么一定要知道这个值是什么含义!

     以u为根的子树,所拥有的节点的数量!那么 sum就是这个数量!  sum的初始值为1,因为还要加上它本身!   res是u它的子树中最大的那个所拥有的节点数目!  

  18. 有效括号,回溯!回溯就是求所有符合要求的方案!

     如何限定!加一个判断就可以

     

  19. dfs想象你正在走一个迷宫,如何才能不陷入循环,标记那些已经走过的路,如何能退出,用一根绳子记录你走过的路,然后把你倒退着走出来

     

  20. BFS想象你往湖里投了一枚石子,波纹散开  VISITED的数组如此重要,防止我们陷入一遍又一遍的循环   可达性就是看看从原点出发是否vis特的

     

  21. 基本架构一个for循环,遍历单点的所有邻边,如果这个点没有被遍历过dfs这个点

     如果遍历过continue!

  22. 拓扑排序dfs版! 对每一个节点做到dfs遍历!

     

  23. dfs判断是不是有环

     

     explore的意思是从X出发遍历它的所有邻边,结果竟然发现有一个节点y是explore的,说明y到x有一个圈

  24.  

    组合数字2  谁说不需要回溯!不回溯怎么恢复状态继续往前搜,图因为只遍历一次才不用。遍历和生成!

     

     

     

     

     

  25.  

     

     

  26.  

    个人对于回溯算法求这种组合、排列生成问题的理解!  往下延伸之后往回走是一定要把值恢复回来的,为什么有些代码里看不到恢复操作,是因为这些都是值传递,类似String 新造一个,int target不是在原值的基础上做改动,理解这一点就理解的关于数的回溯算法的关键!   used数组用来求排列  begin用来求组合!

     

     

     

posted @   SunShine789  阅读(31)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示