算法训练 -- 前言

2020-12-26  本文已影响0人  珺王不早朝

此为 拉勾教育算法训练营 学习笔记
如老师所说,学习任何知识之前,都要先有知识体系的概念,要先找到知识之间的联系
知识体系比知识本身更重要,如果对知识体系掌握不全,就会在某个维度上缺少对知识的认知,形成漏洞或短板


数据结构与算法 知识体系


算法训练的最终目标:真正 掌握 数据结构与算法

只有“胸有成竹”,才能“张口就来”!

数据结构

数据结构的核心任务是存数据
计算机中,数据的存储方式只有两种:顺序存储 和 链式存储
数组 => 顺序存储
链表 => 链式存储(离散存储)
数组和链表是最基础的数据结构,其他数据结构的底层实现要么基于数组,要么基于链表,要么基于数组+链表

算法思维

算法的核心任务是操作数据
算法决定程序的效率
程序效率的衡量 包括 两个维度:时间复杂度 & 空间复杂度(内存)


6C 解题方法论

1. Comprehend 理解题意
关键点:分析问题根源,寻找解题思路,构建可行方案
具体做法:尝试将问题提炼成模型,如:“这道题可以看做一个典型的xxxx问题!”

2. Choose 选择数据结构与算法
根据需求:选择数据结构,选择算法思维

3. Code 编码实现基本解法
使用注释,记录和梳理解题流程
先编写主体代码(按照解题流程一步一步编写),并本地测试
再处理边界问题,考虑特殊情况,并本地测试

4. Consider 思考更优解
寻找更好的 数据结构
  剔除无效代码,优化空间消耗
  删除不必要的操作、多余的变量、多余的数据结构,从而提高代码性能
寻找更好的 算法思维
  例如:遇到数字相关的问题应该优先尝试使用数学方法实现功能
参考和借鉴 其他算法

5. Code 编码实现最优解

6. Change 变形与延伸
参考其他相关题目,或者思考改变本题的某个条件(操作对象的类型、范围等)后,该如何解决?


刷题方法论

学会立Flag,从少到多,从易到难,循序渐进

笔记目录


上一篇下一篇

猜你喜欢

热点阅读