【Leetcode Daily】1922统计好数字的数目
发表于|更新于|力扣日常 | LeetcodeDaily
|总字数:619|阅读时长:2分钟|浏览量:
题目浅析
- 想查看原题可以点击题目链接。
- 简单地说,就是给一个数字 n,要求给出满足特定要求的位数为 n 的数字个数,该要求是(从零开始)偶数下标为偶数且奇数下标为质数。
思路分享
- 刚开始本想用数位 dp,但细算觉着计算量还是太大,本地对于每一位实际上没有太多限制,但是总数量非常大,只好看看题解思路。
- 本题本质上可以用组合数学算出,一个 n 位的数字,必定有 (n/2) 取下位偶数下标,剩下奇数下标,偶数下标有 5 个可能,奇数下标有 4个可能,所以只要计算出 5^((n+1)/2) + 4^(n/2) 即可(这里的 / 为整除)。
- 注意,由于数字很大,有两个要点,一个是快速幂,二是如何正确取模。
快速幂
- 快速幂的本质是通过把普通的累乘,转化为平方乘积,复杂度由O(n)降到了O(log(n))。
- 比如,计算 2 的 13 次方,13 的二进制表示为 1101,2 的 13 次方可以视为 2^4 * 2^3 * 2^1。
- 转化为程序的自然语言,就是不断判断次方数的最后一位是否为 1,是的话,将结果乘上当前底数,每次次方数右移时,底数则平方。
- 如果指数为负数,则将指数取反得正数,同时把底数求倒数。
取模方法
- 这里涉及到不少离散数学的知识,简单地说,除了 python 以外的语言如果先求解结果再取模一般都会因为溢出出错。因此需要通过下面方法来解决。
- 对于加法 a + b,可以这么取模:a + b % MOD
- 对于减法 a - b,可以取模:(a - b + MOD ) % MOD
- 对于乘法 a*b*c, 可以取模:(a * b % MOD) * c % MOD
- 除法尚未理解,姑且放着,用到自然会学:)
https://leetcode.cn/discuss/post/3584387/fen-xiang-gun-mo-yun-suan-de-shi-jie-dan-7xgu/
代码解答(强烈建议自行解答后再看)
- 参考的解法
1 | class Solution { |
文章作者: 陆爻齐-LuYaoQi
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!
相关推荐

2025-04-24
【Leetcode Daily】1052爱生气的书店老板
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给两个整型数组,以及一个整数 minutes,按某个要求(具体看原题,难以简化),求一个数组在另一个数组和 minutes 约束下的求的最大值。 思路分享 陆爻齐的思路是计算窗口内(也就是冷静的分钟)不满意生气离开的最大值,加上不生气的心情值,再减去所有生气离开的数值得出答案,但由于思想复杂了点,所以略微修改模板结构,也就是下面陆爻齐的答案。 参照灵茶山艾府,其实只要区分开两部分相加即可,然后直接参照模板。这两部分,一个是不生气的值,一个是生气下的值,取生气下最大值即可。这样就不用像上面一样多一次运算。 https://leetcode.cn/problems/grumpy-bookstore-owner/solutions/2751888/ding-chang-hua-dong-chuang-kou-fu-ti-dan-rch7/ 代码解答(强烈建议自行解答后再看) 陆爻齐的解法 12345678910111213141516171819202122232425class Solution...

2025-04-28
【Leetcode Daily】1297子串的最大出现次数
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个字符串,求满足要求的子串中,出现最多的次数。该要求为 1. 内部的字母数量小于 maxLetters;2. 整个字符串的长度在 minSize 和 maxSize 之间(闭区间)。 思路分享 该题的难度在于干扰项 maxSize,由于求子串尽可能多的出现,所以该子串的长度必然越小越好,就是 minSize。 就是定长滑动窗口(【Leetcode Daily】1456定长子串中元音的最大数目),有了个字母数量不大于 maxLetters 的限制,再用哈希统计满足要求字符串出现的次数即可。 代码解答(强烈建议自行解答后再看) 陆爻齐的解法 1234567891011121314151617181920212223242526272829class Solution {public: int maxFreq(string s, int maxLetters, int minSize, int maxSize) { vector<int>...

2025-04-23
【Leetcode Daily】1423可获得的最大点数
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个整型数组和一个数字 k,求按照某种方式下获取卡牌所得的最大点数。该方式为每次只能够取得最左或者最右的卡牌。 思路分享 逆向思路,由于每次拿卡牌只拿两侧,所以中间部分是连续的,可以视为一个定长滑动窗口,只不过是求窗口内的最小和,通过这个数值得到答案。滑动窗口模板沿用【Leetcode Daily】1456定长子串中元音的最大数目 正向思路,穷举所有组合可能。 https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/solutions/2551432/liang-chong-fang-fa-ni-xiang-si-wei-zhen-e3gb/ 代码解答(强烈建议自行解答后再看) 逆向 12345678910111213141516171819202122232425class Solution {public: int maxScore(vector<int>& cardPoints,...

2025-04-18
【Leetcode Daily】1343大小为K且平均值大于等于与之的子数组数目
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个整数数组,两个整数 threshold 和 k。k是限定子数组的长度,threshold 是阈值。求这个数组中长度为 k 且平均值大于阈值 threshold 的数目。 注意,在算法题中,子数组默认连续,而子序列默认不连续。 思路分享 定长滑动窗口模板秒了,具体参照 【Leetcode Daily】1456定长子串中元音的最大数目 不过这里的和用 int 也没问题,我估计是因为是大于等于阈值这个条件的关系,大于的情况即使因为整数的小数丢失,也能算做等于情况计入。 代码解答(强烈建议自行解答后再看) 滑动窗口 1234567891011121314151617181920class Solution {public: int numOfSubarrays(vector<int>& arr, int k, int threshold) { int result = 0; int sum = 0; for (int i =...

2025-05-05
【Leetcode Daily】1493删掉一个元素以后全为1的最长子数组
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个由 0 和 1 组成的数组,现在需要从中删除一个元素,求删除后只含 1 的最长子数组长度。 思路分享 除了不定长滑动窗口模板的内容(【Leetcode Daily】3090每个字符最多出现两次的最长字符串),本题只有一点需要特别注意,那就是必须要删除一个字符的需求。 由于这个需求的存在,会造成一种情况,如果子串内没有 0,也必须删除一个字符,而如果子串内有一个 0,那就删除 0 来获取长度。所以可以发现,无论是什么情况,最后求得的结果都要减一。 代码解答(强烈建议自行解答后再看) 陆爻齐的解法 12345678910111213141516171819202122class Solution {public: int longestSubarray(vector<int>& nums) { int zero_count = 0; int left = 0; int n = nums.size(); int...

2025-04-14
【Leetcode Daily】1534统计好三元组
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个数组,要求统计其中所有满足要求三元组的数量。该要求是,两两之差,满足题目的三个数字。 思路分享 首先就是暴力解法,O(n^3),不过陆爻齐在普通的暴力上做了一点点剪枝,但终究还是暴力。 想要比较好的完成本题,就需要学习前缀和,总体的思路是固定三元组中的两个,通过要求来求得剩下一个值的范围,将该范围在前缀和中搜寻,符合则找到合适的三元组。 https://leetcode.cn/problems/count-good-triplets/?envType=daily-question&envId=2025-04-14 代码解答(强烈建议自行解答后再看) 陆爻齐小改良的暴力解法 12345678910111213141516171819class Solution {public: int countGoodTriplets(vector<int>& arr, int a, int b, int c) { int size =...
公告
希望你我都能得偿所愿
PS:相对流水账的文章只能在归档找得到
系列文章
