Skip to content

【314-毕业总结】 #1364

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
ghost opened this issue Dec 25, 2019 · 0 comments
Open

【314-毕业总结】 #1364

ghost opened this issue Dec 25, 2019 · 0 comments

Comments

@ghost
Copy link

ghost commented Dec 25, 2019

持续学习

在课程中学到最重要的内容,最重要的不是某一道题的解法,或者某一类题目的解法,而是掌握一种高效的方法,进行不断的练习
算法这条路,没有捷径,唯有不断的练习,再加上持之以恒的心,每天进步一点点就够了。

刷题的方法很重要,刷题初期各种套路不明白很正常,多学,多看,多练习,慢慢就会了,下次遇到类似套路题目,就能搞定

数据结构总结

线性结构

  1. 数组 连续存储 查找O(1) 插入删除 O(n)
  2. 链表 非连续存储 查找O(n) 插入删除O(1)
  3. 栈 先入后出 可以模拟递归函数调用
  4. 队列 先入先出

哈希表

哈希表利用hash算法,可以将key映射为数组索引,插入,查找的时间复杂度都为O(1) 空间复杂度为O(n)
哈希冲突在Java中是利用链表法来解决的,相同hash值的node,利用链表进行串联,在链表节点超过8以后,会改变为红黑树存储,防止hash攻击

  1. BST(二分搜索树) 根节点的值大于左子树小于右子树.查找插入删除,查找log(n),中序遍历是有序的
  2. trie 字典树,处理字符类操作非常高效
  3. 红黑树,AVL树
  4. 平衡二叉树 平衡二叉树是左右子树高度不超过1的树,AVL树是严格平衡二叉树,红黑树是黑节点平衡,左右子树高度差最高为一倍
  5. 完全二叉树 除了最后一层,每一层的节点都是满的,最后一层,节点靠左排布
  6. 满二叉树 左右子树的高度差为0,每一层的节点都是满的
  7. 树的遍历 前中后(递归迭代都必须掌握) 迭代使用Stack模拟递归,层序遍历使用队列

图这个数据结构最重要的内容是遍历

  1. DFS 深度优先
  2. BFS 广度优先
  3. 最短路径
  4. 连通分量
  5. 最小生成树

常用算法思想

  • 分治
  • 递归
  • 回溯
  • 动态规划
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

0 participants