算法训练总结篇

发布时间:2024年01月10日

第一部分:数组(day1-day2)

数组部分刚开始算法的练习主要内容还是day2学到的滑动窗口解决思路和双指针解决思路

第二部分:链表(day3-day4)

链表部分涉及到要掌握的算法实际上主要是虚拟头结点的构建和双指针的操作,有了数组的基础实际上很好理解双指针的思路

第三部分:哈希表(day6-day7)

哈希表中无非涉及三种类型的情况:1.遇到字母组成的哈希问题,我们可以考虑使用char[]数组来解决,2.set做哈希表,这种情况下我们一般要判断这个数值是否存在,3.map做哈希表,这种情况下我们不仅要判断是否存在,还要返回对应下标。

第四部分:字符串(day8-day9)

字符串中的双指针问题实际上和前面的双指针思路相似,不多总结,而还有一部分则是涉及KMP算法问题,我们在本次刷题中只做个理解。

第五部分:栈与队列(day10-day13)

栈与队列实际上并没有过多难题,主要就是在于理解题意会使用栈和队列即可。

第六部分:二叉树(day14-day23)

二叉树题目本质上无非是递归法和迭代法,大多数题目用递归法解决,这也要求我们在做题的过程中先考虑好递归的几个要素,其次是二叉树做题时我们要判断题目应该使用哪一种遍历方式。

第七部分:回溯算法(day24-day30)

回溯算法大部分可以通过我们所知的回溯三部曲来解决,同时区分组合、排列等问题,需要去重的可以用used数组去重,部分题目可以通过剪枝来提高效率。

第八部分:贪心算法(day31-day37)

贪心无套路,所以对于贪心算法的问题我们并没有过多算法上的思路可以提供,大部分贪心是通过做题的经验来得出答案。

第九部分:动态规划(day38-day57)

动态规划是这阶段学习时间最长的一部分,除了前半部分学习的背包问题和完全背包我们,在后面我们还学习了处理组合数和排列数的情况,我们需要明确的是:如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。

第十部分:单调栈(day58-day60)

单调栈并不是特别难考虑,所以我们只需要根据题目选择是单调增还是单调减,并套用不同的模板即可

文章来源:https://blog.csdn.net/lenwu222/article/details/135509850
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。