algorithm005-class01 / algorithm005-class01

18 stars 128 forks source link

【0014_Week02】第二周总结 #443

Open javaxiaomangren opened 4 years ago

javaxiaomangren commented 4 years ago

之前一周刷题的感觉有几个:

  1. 越刷越快, 看到新题思路会多一些
  2. 有些题浪费了太长时间,信心受挫, 五步刷题的精髓是先熟后精
  3. 不会的题千万千万别纠结, 快速过, 重复过, 缩短每次刷题时间, 增加刷题次数
  4. 看不太懂的解题方法-使用IDE的调试功能,跑几遍就了然了
  5. 多总结规律

为了方便复习我整理了一个脑图: https://www.processon.com/view/link/5df9915ae4b06f5f14615e8a


(一) 散列表

冲突解决的解决方法

hash 函数的设计

动态扩容


(二) 树、二叉树、二叉查找树 一些基本概念前驱、后继节点、父节点、子节点、兄弟节点 节点高度、节点深度 、树的高度 、节点层数

(三) 递归

class Solution:
    def climbStairs(self, n: int) -> int:
        mem = {}
        return self._climb(n, mem)

    def _climb(self, n: int, mem: dict) -> int:
        # 1. 递归终止条件
        if n <= 2:
            return n
        # 2. 处理当前层逻辑 - 这里可以用类似记忆化
        if mem.get(n):
            return mem.get(n)
        # 3. 去到下一层
        res = self._climb(n - 1, mem) + self._climb(n-2, mem)
        # 4. 清理当前层状态
        mem[n] = res
        return res
javaxiaomangren commented 4 years ago

加油!

pokongzi commented 4 years ago

666