算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂

利益相关。力扣君这里有一些算法题刷题技巧,一起来看看吧!
众所周知,算法题主要有两大难点,一是「实现」,即算法本身的难度;二是「思路」,即你能否想到使用这个算法来解决题目。
并且对于有一定刷题基础的同学来说,力扣(LeetCode)上大部分简单、中等题所涉及的算法都是非常常见的算法,即算法本身不存在难度,最大的难点在于「思路」,即如何想到适合本题的算法。
而解决「思路」问题,除了大量刷题积累经验之外,还可以采用一定的「巧劲」,从时间复杂度这个角度入手筛选出合适的算法。而本文的主要目的就是向大家介绍这种「巧劲」是如何在具体解题过程中发挥作用的。
本文一共分成三个部分,具体内容框架如下所示:
算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂

一、数据范围的隐含信息如何确定一道题合适的时间复杂度?最简单、快捷的方式就是通过观察题目中的数据范围来确定。
不过你可能马上会反驳,力扣上并不是所有题目都有数据范围,那又该如何确定呢?
不要急噢,没有数据范围也是可以采用这种方式来思考的,我们会在「练习」部分进行详细说明。
言归正传,如何通过数据范围来确定合适的时间复杂度呢?
通常来说,在力扣上,Python 可以支持到 算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂
的时间复杂度;C++ 会稍微多一点,大概 算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂
- 算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂
之间。因此我们可以得到如下表所示的,数据范围与算法大致时间复杂度的对应表。
算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂

二、算法时间复杂度总结 通过数据范围得到时间复杂度后,我们需要对照下图筛选出适合的算法进行求解。
算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂

此处有两点需要注意:
1. 上图仅列出了时间复杂度较为固定的常见算法,而类似于动态规划、贪心、暴力等时间复杂度百变多样的算法并未列出。
2. 算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂
的算法通常与 算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂
的算法组合在一起,用于实现 算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂
要求的题目。
三、练习?在讲解具体题目之前,我们先明确一下根据时间复杂度做题的具体流程:
1. 根据数据范围选择时间复杂度
2. 根据时间复杂度选择对应的常见算法集合
3. 思考题目特征,从集合中选出合适的算法
4. 根据选出的算法求解题目
接下来我们从力扣「2020-04月 每日一题」中选取三道题用于该流程的练习。
题库 - 力扣 (LeetCode)
力扣 1248. 统计「优美子数组」力扣题目描述给你一个整数数组 nums 和一个整数 k。
如果某个连续子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。
请返回这个数组中「优美子数组」的数目。
示例 1:输入:nums = , k = 3输出:2解释:包含 3 个奇数的子数组是 和 。示例 2:
输入:nums = , k = 1输出:0解释:数列中不包含任何奇数,所以不存在优美子数组。示例 3:
输入:nums = , k = 2输出:16


推荐阅读