# 学习指导

# 知识体系

以思维导图和列表的形式展现

# 思维导图

正在完善中~

敬请期待~

# 列表

数据结构

  • 数组
  • 链表
  • 队列
  • 字符串
  • 集合
  • 字典和散列表
  • 递归
  • 树-二叉搜索树-红黑树-堆

算法

  • 排序算法
  • 搜索算法

# 学习资料

# 学习步骤/ 参考资料

# 约定

每一部分的内容如果没有特殊情况,分为以下几部分

  • 介绍
  • 题目
  • 题目来源-指明出处-如果在多个资源中出现,也应标出
  • 分析-思路-引导
  • 题解-多种解法-明确大O复杂度
  • 做题过程中如果有错误要进行记录,避免下次再犯
  • 总结-思考,解题关键点
做题记录

一般有以下可选项

  • 刷题的时间,一刷,二刷
  • 做题过程中如果有错误要进行记录,避免下次再犯
  • 自己的一些想法/疑问

# 数据结构与算法

# 介绍

什么是数据结构

  • 数据结构就是在计算机中,数据的存储和组织方式。

常见的数据结构较多

  • 每一种都有其对应的应用场景,不同的数据结构的不同操作性能是不同的;
  • 有的查询性能很快,有的插入速度很快,有的是插入头和尾速度很快;
  • 有的做范围查找很快,有的允许元素重复,有的不允许重复等
  • 在开发中如何选择,要根据具体的需求来选择

什么是算法

  • 算法是描述解决问题的方法。
  • 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

《大话数据结构》

注意:数据结构与算法与语言无关,常见的编程语言都有直接或间接的使用上述常见的数据结构。

# 为什么要学习数据结构与算法

  • 基础知识就像是一座大楼的地基,它决定了我们的技术高度。那技术人究竟都需要修炼哪些“内功”呢?我觉得,无外乎就是大学里的那些基础课程,操作系统、计算机网络、编译原理等等,当然还有数据结构和算法。

王争

可能你学到这里的时候, 已经感觉到数据结构的一些复杂性, 但是如果你仔细品味, 你也会发现它在设计时候的巧妙和优美, 当你爱上它的那一刻, 你也真正爱上了编程.

coderwhy

# 如何学习数据结构与算法

学习过程中:

  • 刻意练习
  • 番茄工作法
  • 列出问题,先思考,自己想答案,再看答案
  • 用一个比较小的数据集对所写代码进行模拟
  • 不断反思之前自己所做的题目,看是否有更优雅的解法
  • leetcode 题解,可以看看别人的解题思路,对照自己的,进行完善
  • 做题过程中如果有错误要进行记录,避免下次再犯
  • 思考的时间要逐渐减少,不要死磕,看别人的思路,自己尝试写代码-因为如果是面试,有时间限制
  1. 边学边练,适度刷题
  2. 多问、多思考、多互动
  3. 打怪升级学习法
  4. 知识需要沉淀,不要想试图一下子掌握所有

王争

# 精通一个领域-覃超

  1. 切碎知识点
  2. 建立知识体系
  3. 刻意练习
  4. 反馈
  5. 完善知识体系

三分学,七分练

# 切题四件套-覃超

  1. clarification 询问题目细节,边界条件,可能的极端错误情况
  2. possible solutions 所有可能的解法都和面试官沟通一遍
  • 时间/空间复杂度
  • 寻找最优解
  1. coding 多写代码
  2. test cases 测试用例

# 五毒神掌

五遍刷题法--过遍数

  • 【1】刷题第一遍
    • 5分钟:读题+思考(如果基础薄弱,可以10分钟,最多15分钟)
    • 直接看解法:注意!多解法,比较解法优劣
    • 背诵+默写好的解法,反复很多遍
    • LeetCode国际站
  • 【2】刷题第二遍
    • 马上自己写-->leetcode提交
    • debug--修改--通过
    • 多种解法比较、体会(比较重要的是执行时间)-->优化
  • 【3】刷题第三遍
    • 过了一天(24h)后,再反复做题
    • 不同解法的熟练程度-->专项练习
  • 【4】刷题第四遍
    • 过了一周:反复回来练习相同题目
  • 【5】刷题第五遍
    • 面试前一周(自己的情况而定)恢复性训练

# 一些

做算法题的最大误区:只做一遍

思想?

  • 升维
  • 空间换时间

懵逼的情况,应该怎么办?

  • 暴力?
  • 基本的情况如何解决?
  • 找最近重复子问题
  • 指针(双指针、多指针)
  • 先排序
  • 合适的数据结构

因为我们在写程序的时候

  • if...else...
  • for
  • while
  • recursion(递归调用)

不断重复

上次更新: 2021年10月30日星期六晚上8点03分