## 算法练习的一些感悟 - 数组的题,一般比较常规,都是swap就可以; - 链表的题本质上不难,都是套路题,最重要的就是画图 - 比如swap nodes in pairs,这道题思路不难,就是写了很久,终止条件判断、谁先指向谁,很容易乱,画图比较直观 - 栈、队列还要深入练习,不能只用于最简单的Valid Parentheses; - 比如可以利用栈生成tree、利用栈实现递归改循环(几个进几个出并不那么直观)、利用栈做dfs搜索 - 可以利用队列实现bfs - JavaScript并没有实现成熟的堆栈类,都是得用数组去模拟,很多时候得培养自己的堆栈意识,而不是笼统的认为pop、shift只是数组的API,随便拿来用 ## 关于递归的一些看法 - 正向思维很容易想到递归的方法 - 但是很容易超时(并且边界条件搞不定) - 不一定所有的递归都好加记忆化(变量过多的时候不适合) - so 动态规划得好好练习 ## Tree - 树其实很好理解,但是题真的不好做 - 递归、迭代法都需要做一遍,通过迭代法练习通过栈、队列进行循环处理 - 树的题很容易和DFS/Bfs一起出现,需要格外关注这类型的题 - 边界处理(关注根节点的特殊性) ## 其他 - 仔细审题 - 一些思路很顺的题目,终止条件、边界条件判断很容易出错 - 并且边界判断很容易写的繁杂、冗余,得多看别人的代码是如何应对多种边界的情况的 **脑图梳理** https://github.com/zyziyun/algorithm/blob/week1/Week_01/id_39/%E7%AE%97%E6%B3%95%E4%B8%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.png
Activity
[-]【039-week1】刷题回顾[/-][+]【039-week1】第一周练习回顾(stack、queue、tree)[/+]Merge pull request #60 from BrunoYang0918/master
Merge pull request #115 from BrunoYang0918/master
Merge pull request #234 from BrunoYang0918/master