写在前面:
为了高效地刷leetcode,在网上搜了应该怎么去刷,有两点感悟:
首先应该弄懂基本的数据结构和算法,所以刷leetcode应该是一个知识转化为实践的过程,基本的算法理念应该先有;
第一遍可以按tag刷题,刷完easy再刷medium可以先不刷hard,优先刷热度高的题;
1、常见的数据结构和算法
(1)数据结构
线性表、数组、链表、哈希、栈、队列、堆。。。
(2)算法
查找、排序、动态规划。。。
2、按tag优先刷热度高的题
当你没有思路的时候,可以看看GitHub、bibilili上的解题思路。
剩下的还有心态的问题哦,刷leetcode应该是程序员的基本修养呀,还有不能急于求成,要根据自己的时间制定计划,不要想一口气吃个大胖子,也不要让自己拖延。
两个月的时间,刷top100的话,每天也要至少坚持两道,3-5*60=180-300。
然后,凡事一但开始就是成功的一半呀~
第一块数据结构:两个重要点,哈希散列 和 树
![](https://img.haomeiwen.com/i12921408/f313e99ab83c6647.png)
参考资料:HashMap, HashTable,HashSet,TreeMap 的时间复杂度 注意数组链表 增删改查的时间复杂度都不相同(阿里)
https://www.cnblogs.com/aspirant/p/8902285.html
待补充~~~
20200711 周六:
突然发现自己对于数据结构了解得太浅和不扎实,想想在工作中由于不熟悉这些带来的低效也没有去反醒,今天才发现,于是想应该好好补一补数据结构然后算法,找来找去资料,后来发现还是教材合适,计算机学科的大学教材,果然出来混都是要还的,哈哈哈
今天看的内容:
1、数据和算法的整体概念了解
(1)数据
逻辑结构:数据元素之间的逻辑关系,可以看作是从具体问题抽象出的数学模型,包括集合结构、线性结构、树状结构、网状结构
存储结构:数据结构在计算机内部的表示或实现,逻辑关系的物理表达,包括顺序存储结构、链式存储结构、索引存储结构、散列存储结构
运算实现:包括增删改查排序
(2)算法
有穷的规则集合,其规则确定了一个解决某一类特定类型问题的运算序列。
时间、空间复杂度
2、线性结构之线性表
(1)栈 后进先出,数制转换 迷宫问题
(2)队列 先进先出 杨辉三角
(3)字符串 串中的数据元素都是单个字符,串的基本操作通常以串的整体为对象 串定位(模式匹配)
(4)数组 顺序存储结构,特殊矩阵压缩
20200712 周天:
1、树
二叉树、满二叉树、完全二叉树、二叉线索树
遍历:先、中、后
恢复:先+中,中+后
2、图
图的定义:顶点、边、度
图的存储:数组、邻接表
图的算法:最小生成树
图的应用:最短路径 Dijkstra算法
3、查找表
顺序查找
二分查找
分块查找
哈希表
4、排序
(1)插入排序
直接插入排序、折半查找插入排序、希尔排序
(2)选择排序
直接选择排序、堆排序
(3)交换排序
冒泡排序、快速排序
(4)其他排序
归并排序、基数排序
排序算法评价:
新增、删除、查询的时间复杂度
在了解了概念之后,开始刷题吧~开始刷题吧~~开始刷题吧~~~
今天也要加油鸭~
网友评论