算法题到底咋做很多题根本找不到思路,每个题做完弄懂之后,下一次还是重写不出来,不知道啥算懂( 二 )
数据范围1 \u0026lt;= nums.length \u0026lt;= 500001 \u0026lt;= nums \u0026lt;= 10^51 \u0026lt;= k \u0026lt;= nums.length解决过程数据范围 =\u0026gt; 时间复杂度?本题的数据范围到达了 50000,因此我们将时间复杂度划定在
的范围内。
时间复杂度 =\u0026gt; 常见算法集合根据上述「常见算法 \u0026amp; 时间复杂度」图,我们可以划定本题的算法集合。由于此题明显是数组上操作的问题,因此我们仅列出
范围内关于数组的算法。差分、前缀和、双指针、桶排序、单调栈、单调队列思考题目特征 =\u0026gt; 从集合中选出合适算法仔细观察题干,可以发现本题有两大关键特征:
1. 连续子数组
2. 子数组内恰好有 k 个奇数数字
如果对「前缀和」算法有所掌握的话,凭借这两大特征不难确定此题可以用「前缀和」求解。
令
表示数组第 0 个数到第 i 个数中奇数的个数,因此区间 符合题意,当且仅当下式成立:
由此我们可以令
表示有多少个节点 i 满足
。然后从左向右枚举,当求得第 i 个点的
值后,更新
数组,并计算有多少个 l 满足区间 符合题意。累加答案即可得到最终结果,具体实现可参看下述代码。
C++ 代码实现class Solution { vector\u0026lt;int\u0026gt; mp;public: int numberOfSubarrays(vector\u0026lt;int\u0026gt;\u0026amp; nums, int k) { int sum = 0, ans = 0, n = nums.size(); mp.resize(n + 2, 0); mp = 1; for(auto y:nums){ if(y % 2) sum++; mp++; if(sum-k \u0026gt;= 0) ans += mp; } return ans; }};
力扣 面试题 08.11. 硬币力扣 面试题 08.11. 硬币题目描述硬币。给定数量不限的硬币,币值为 25 分、10 分、5 分和 1 分,编写代码计算 n 分有几种表示法。(结果可能会很大,你需要将结果模上 1000000007)
?示例 1:输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例 2:输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+1+110=1+1+1+1+1+1+1+1+1+1数据范围0 \u0026lt;= n (总金额) \u0026lt;= 1000000
解决过程数据范围 =\u0026gt; 时间复杂度本题的数据范围到达了 1000000,因此我们将时间复杂度划定在
的范围内。再仔细观察一下「常见算法 \u0026amp; 时间复杂度」图,可以发现由于只有 4 种面值的硬币,因此
的背包也是可行的。
时间复杂度 =\u0026gt; 常见算法集合根据时间复杂度与「常见算法 \u0026amp; 时间复杂度」图,我们可以划定本题的算法集合。由于此题明显与图论、字符串等算法无关,因此我们仅列出
推荐阅读
- 联运■连云港港全国首推集装箱铁水联运“一单到底”
- 汽车知识|第八代高尔夫到底值不值得买?1.4T自动Pro版全款多少钱?
- 人潮汹涌|丁真爆火第20天,到底谁才是真正的“幕后推手”?华春莹为他连发三推
- 微博目前已经支持文本,图片,位置分享,为啥没有语音和视频呢微博的pm肯定想过这两种微博形态,但迟迟不做的原因到底是啥。是语音和视频不符合产
- 什么|到底是什么原因?宝宝易咳嗽
- 淘宝店卖杯子咋推广咋做9.9包邮的爆款有作用吗
- 京广和公司到底是干啥的
- 董洁|40岁的董洁到底怎么啦?少女造型被吐槽,女性的温柔感也不见了
- 中兴努比亚 Z5 的边框到底有多窄
- 汽车知识|西装暴徒的代表,40w就能拥有百万级别的声浪,到底是什么车
