- 如何学好数据结构?
- 精通一个领域
- 切碎知识点
- 刻意练习:
- 练习缺陷,弱点地方(练字)----不爽,枯燥,不舒服的地方----坚持,心里没底的
- 反馈
- 主动反馈:看看高手怎么写代码的(自己去找)
- 被动反馈:高手教你(别人教你)
- 精通一个领域
- 时间复杂度和空间复杂度
- 斐波拉契数量o(2^n)----用递归很明显不是最好的
- 主定律:二分查找。二叉树变量,排序,快排
- LeetCode
- 寻求反馈
- 数组
- 连续的存储区域
- 插入,删除O(n),查询O(1)
- 链表--改善数组的插入和删除的时间复杂度
- 插入和删除O(1),查询O(n)
- 双链表
- 面试题:反转链表
- 面试题:两两反转
- 面试题:判断是否有环
- 2个指针,1个一次走一步,1个一次走两步,相遇就有环---龟兔赛跑法
- set 判重复
- 2个指针,1个一次走一步,1个一次走两步,相遇就有环---龟兔赛跑法
- 栈--先入后出
- 插入和删除O(1),查找O(n)
- 面试题:给定一个只包含大中小括号的字符串,判断括号是否合法
- a.左括号---push
- b.右括号---peek栈顶--pop元素
- c.堆栈必须是空的
- 时间O(n),空间O(n)
- 面试题:只用栈实现队列
- 输入栈:push
- 输出栈:pop,peek
- 倒腾顺序
- 面试题:只用队列实现栈
- 与上面相反,也是两个队列倒腾顺序
- 队列---先入先出
- 插入和删除O(1),查找O(n)
- 优先队列
- 堆实现
- 二叉最小堆
- 面试题:实时判断数据流中第K大的元素
- 1.保存K个最大值
- 优先队列--小顶堆保存K个数据,比他小就弃了,比他大就加入堆弃掉它
- 面试题:滑动窗口最大值
- 优先队列--大顶堆--维护堆,结果是堆顶元素
- 双端队列---最左边的最大,左边比他小的全部删除,右边比他小的保留
- 二叉搜索树实现
- 堆实现
- 映射map
- 集合set
算法通关面试40讲
猜你喜欢
转载自www.cnblogs.com/shuimohei/p/13208368.html
今日推荐
周排行