目的
- 熟悉新近学习的编程语言各种语法糖,最大化的精简代码。
- 复习基本数据结构和基本算法,提高代码效率。
- 训练持久力。
说明
- 所有的算法题目来源于LeetCode,版权归官方所有。
- 知乎:大家是如何刷LeetCode的?
- Github:详尽的LeetCode题解
- Github:动画演示LeetCode题目
- 常用数据结构和算法的动态可视化
个人训练
- 截至2020年2月26日时,基础题目共有1257道,按一个随笔3道题目为例,预计花费时间1257/3=419天,大概是1年3个月,当然某些时候状态好或者时间充足一口气刷完好几天的量也不奇怪,因此Day1对应的题目编号为1-3,Day2对应的为4-6...Day419对应的为1255-1257。
- 冰冻三尺非一日之寒,这里给自己开个坑,慢慢把它填完。
- 官方网站有更详细的题解,Github上也有无数的帅哥美女整理了详细的文字和动态攻略,这里我们就不再重复造轮子。
- 随笔思路:快速刷题,记录自己原始解,如果执行效率和空间利用率都不理想,思考进一步的优化解,最后在熟悉语法糖的基础上,压缩代码文本。
- 官网上的题目分三个难度,简单、中等、困难,这里我们直接按顺序刷,反正都是要掌握的。
- 就跟小学学写字的时候一样,重复训练,大脑和肌肉自然会记住最优解,因此算法训练并不是一蹴而就或者某次突击就能完成的任务,而是需要细水长流,贯穿一生。
掌握数据结构
- 数组与链表:单 / 双向链表
- 栈与队列
- 哈希表
- 堆:最大堆 / 最小堆
- 树与图:最近公共祖先、并查集
- 字符串:前缀树(字典树) / 后缀树
- 随时增加...
掌握基础算法
- 基础技巧:分治、二分、贪心
- 排序算法:快速排序、归并排序、计数排序
- 搜索算法:回溯、递归、深度优先遍历,广度优先遍历,二叉搜索树等
- 图论:最短路径、最小生成树
- 动态规划:背包问题、最长子序列
- 随时增加...
原文地址:https://www.cnblogs.com/zenronphy/p/12368811.html
时间: 2024-10-11 20:09:58