递归
- 定义一个函数,在函数内调用函数本身
- 定义好返回条件
- 想好要传的参数
迭代
- 通过循环语句重复执行,直到达到边界条件 跳出循环
DFS 深度优先、
- 沿着一条路走到头,走到头后遍历兄弟节点,遍历完后往回走一步,然后再遍历兄弟节点,再往回走一部,直到遍历完所有节点
- 一般配合递归来实现
- 典型的题目(HJ93 数组分组): https://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86?tpId=37&tqId=21316&rp=1&ru=/ta/huawei&qru=/ta/huawei&difficulty=&judgeStatus=&tags=/question-ranking
- 凑数求和:https://www.nowcoder.com/practice/11cc498832db489786f8a03c3b67d02c
- 题解:https://blog.nowcoder.net/n/a6b71a5651874650a65945e9bae8e5bf
BFS 广度优先
- 两层循环:第一层用while循环每次循环深度+1,第二层循环用于遍历当前深度的所有节点
- 典型的题目:
- https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/submissions/
- https://leetcode-cn.com/problems/open-the-lock/
动态规划
- 首先我们直到最初的小问题的答案,我称为边界答案,然后通过边界答案可以得出下一步的答案,循环得出下一步的答案,直到最终问题得到解决
- 关键是要找到边界答案和找出转换公式
- 典型题目:https://www.nowcoder.com/practice/e2a22f0305eb4f2f9846e7d644dba09b?tpId=37&tqId=21314&rp=1&ru=/ta/huawei&qru=/ta/huawei&difficulty=&judgeStatus=&tags=/question-ranking
栈
- 先进后出
- 可以通过递归的方式获取到所有可能的出栈顺序
- 第一步:压入第一个栈
- 判断是否还可以入栈,可以的话递归入栈
- 判断是否还可以出栈,可以的话 递归出栈
- 典型题目:https://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109?tpId=37&tqId=21300&rp=1&ru=/ta/huawei&qru=/ta/huawei&difficulty=&judgeStatus=&tags=/question-ranking
网友评论