【314-毕业总结】
Opened this issue · 0 comments
Deleted user commented
持续学习
在课程中学到最重要的内容,最重要的不是某一道题的解法,或者某一类题目的解法,而是掌握一种高效的方法,进行不断的练习
算法这条路,没有捷径,唯有不断的练习,再加上持之以恒的心,每天进步一点点就够了。
刷题的方法很重要,刷题初期各种套路不明白很正常,多学,多看,多练习,慢慢就会了,下次遇到类似套路题目,就能搞定
数据结构总结
线性结构
- 数组 连续存储 查找O(1) 插入删除 O(n)
- 链表 非连续存储 查找O(n) 插入删除O(1)
- 栈 先入后出 可以模拟递归函数调用
- 队列 先入先出
哈希表
哈希表利用hash算法,可以将key映射为数组索引,插入,查找的时间复杂度都为O(1) 空间复杂度为O(n)
哈希冲突在Java中是利用链表法来解决的,相同hash值的node,利用链表进行串联,在链表节点超过8以后,会改变为红黑树存储,防止hash攻击
树
- BST(二分搜索树) 根节点的值大于左子树小于右子树.查找插入删除,查找log(n),中序遍历是有序的
- trie 字典树,处理字符类操作非常高效
- 红黑树,AVL树
- 平衡二叉树 平衡二叉树是左右子树高度不超过1的树,AVL树是严格平衡二叉树,红黑树是黑节点平衡,左右子树高度差最高为一倍
- 完全二叉树 除了最后一层,每一层的节点都是满的,最后一层,节点靠左排布
- 满二叉树 左右子树的高度差为0,每一层的节点都是满的
- 树的遍历 前中后(递归迭代都必须掌握) 迭代使用Stack模拟递归,层序遍历使用队列
图
图这个数据结构最重要的内容是遍历
- DFS 深度优先
- BFS 广度优先
- 最短路径
- 连通分量
- 最小生成树
常用算法**
- 分治
- 递归
- 回溯
- 动态规划