Skip to content

【061-week1】总结以及做算法时的小套路 #36

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
otkinlife opened this issue Apr 18, 2019 · 3 comments
Open

【061-week1】总结以及做算法时的小套路 #36

otkinlife opened this issue Apr 18, 2019 · 3 comments

Comments

@otkinlife
Copy link

第一周学习总结

本周主要是对基本数据结构(数组,链表,栈,队列等)以及简单排序搜索算法的复习

学习总结:

  1. 链表部分:
    • 首先链表的结构比较简单,高效增删改,但查询效率极低。
    • 算法题目要注意边界问题,要考虑增删改时对头结点和尾结点的特殊处理。或者使用哨兵结点
    • 指针的指向问题一定要梳理清楚,防止出现野指针或者无限循环的指向。
  2. 数组部分:
    • 数组是连续内存空间,查询效率高,增删改效率低。
    • 在复杂的算法中,可用于临时存放查找频率高的数据来降低算法复杂度(空间换时间
    • 要注意边界问题,不能越界!
  3. 栈部分:
    • 栈属于特殊的线性结构,先进后出。
    • 一般用于对顺序有要求的场景
  4. 递归部分:
    • 最重要的是一定要画递归树,然后推出递推公式
    • 找到退出条件
    • 在考虑递归时不要层层展开,抽象考虑。自顶向下或者自底向上分析
    • 可以考虑用循环代替
  5. 排序部分:
    • 基础排序算法思想,快排的思想,归并的思想,以及桶排序的思想。思想很重要,可以应用到别的算法上
  6. 动态规划:
    • 问题可以分解为子问题,优先考虑动态规划。
    • 优先分析题目,找到子问题的分解方式
    • 如果有重复计算,可以通过HashMap或者其他数据结构记录,降低时间成本

作业总结:

作业任务基础部分压力不大,在递归,动规上需要加大练习量。

  1. 链表、数组、栈部分问题不大。从递归往后开始很吃力,需要加大练习,多分析。
  2. 687,698虽然有想法但是依旧没有解出来。后续参考别人的算法分析调整
  3. 174采用动态规划,递归解决子问题。有解,但是超时,需要优化时间复杂度。
@yanlingli3799
Copy link
Contributor

赞,这是我目前看到的字数最多覆盖面最广的总结了,66666

@tolookme
Copy link
Contributor

超全面的总结,学习了!

@lcfgrn
Copy link

lcfgrn commented Apr 21, 2019

总结的很好,学习了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants