• 九章算法:独孤九剑


    这逼课上了也没啥用,都是很粗线条的框架,说了跟没说似的。哦不,独孤九剑有用。

    (大部分来自天纯的pdf笔记)
    不咋考:如果问连通性,静态就是 DFS,BFS,动态就 UF
    不咋考:如果问依赖性就 topo sort
    不咋考:DAG有向没环路图 的问题就 dfs+memo 
    确实要小心但其实也不咋考:矩阵和 Array 通常都是 DP
    确实要小心但其实也不咋考:问数量的通常都是 DP
    确实要小心但其实也不咋考:问是否可以,也很有可能 DP

    加了:求所有解的,基本 backtracking
    排序总是可以想一想的
    万事总可以想HashMap
    找规律试试Stack

    碰到二叉树的问题,就想想整棵树在该问题上的结果 和左右儿子在该问题上的结果之间的联系是什么

    独孤九剑 —— 破剑式:比O(n)更优的时间复杂度 几乎只能是O(logn)的二分法

    独孤九剑——破枪式
    能够用 BFS 解决的问题,一定不要用 DFS 去做! 因为用 Recursion 实现的 DFS 可能造成 StackOverflow!
    (NonRecursion 的 DFS 一来你不会写,二来面试官也看不懂) 

    总结:先想最短路的BFS,再想所有路的DFS(backtracing)

    独孤九剑 —— 破鞭式 碰到让你找所有方案的题,一定是DFS。 90%DFS的题,要么是排列,要么是组合

    独孤九剑 —— 破索式 链表结构发生变化时,就需要 Dummy Node

    独孤九剑 —— 破掌式 对于求 2 个变量如何组合的问题,可以循环其中一个变量,然后研究另外一个变量如何变化

    独孤九剑 —— 破箭式 BFS 的主要数据结构是 Queue
    DFS 的主要数据结构是 Stack 千万不要搞反了!很体现基础知识的扎实度!

  • 相关阅读:
    java集合:ArrayList(1)
    java虚拟机:堆内存
    计算机三种编码与加减运算
    java虚拟机:程序计数器
    java虚拟机:JIT编译器
    java虚拟机:运行时常量池
    java虚拟机:方法区
    java虚拟机:本地方法栈
    java虚拟机:class文件结构
    linux安装mysql
  • 原文地址:https://www.cnblogs.com/immiao0319/p/12116457.html
Copyright © 2020-2023  润新知