Skip to content

【039-week1】第一周练习回顾(stack、queue、tree) #15

Open

Description

@zyziyun

算法练习的一些感悟

  • 数组的题,一般比较常规,都是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

  1. changed the title [-]【039-week1】刷题回顾[/-] [+]【039-week1】第一周练习回顾(stack、queue、tree)[/+] on Jun 8, 2019
  2. added a commit that references this issue on Jun 10, 2019
  3. added 2 commits that reference this issue on Jun 24, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions