一面 4:从容应对算法题目
由冯·诺依曼机组成我们知道:数据存储和运算是计算机工作的主要内容。程序=数据结构+算法,所以计算机类工程师必须掌握一定的数据结构和算法知识。
知识点梳理
● 常见的数据结构
○ 栈、队列、链表
○ 集合、字典、散列集
● 常见算法
○ 递归
○ 排序
○ 枚举
● 算法复杂度分析
● 算法思维
○ 分治
○ 贪心
○ 动态规划
● 高级数据结构
○ 树、图
○ 深度优先和广度优先搜索
本小节会带领大家快速过一遍数据结构和算法,重点讲解一些常考、前端会用到的算法和数据结构。
数据结构
数据结构决定了数据存储的空间和时间效率问题,数据的写入和提取速度要求也决定了应该选择怎样的数据结构。
根据对场景需求的不同,我们设计不同的数据结构,比如:
● 读得多的数据结构,应该想办法提高数据的读取效率,比如 IP 数据库,只需要写一次,剩下的都是读取;
● 读写都多的数据结构,要兼顾两者的需求平衡,比如 LRU Cache 算法。
算法是数据加工处理的方式,一定的算法会提升数据的处理效率。比如有序数组的二分查找,要比普通的顺