算法训练总结篇

本文概述了编程学习过程中从数组和链表基础,到哈希表、字符串处理、数据结构(如栈、队列、二叉树),再到回溯、贪心、动态规划和单调栈等高级算法的实践与理解。
摘要由CSDN通过智能技术生成

第一部分:数组(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)

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

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值