【Leetcode Daily】2342数位和相等数对的最大和
发表于|更新于|力扣日常 | LeetcodeDaily
|总字数:281|阅读时长:1分钟|浏览量:
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给一个整型数组,找其中数位和相同的两两一组的数字,从中找每组数组和最大值。
思路分享
与 【Leetcode Daily】2815数组中的最大数对和 几乎相同,只是把每组数字的要求变化为数位和相同,故不多赘述。
O(n) 枚举的基本思想可以看 【Leetcode Daily】1两数之和。
灵神看出本题的数位和不超过 10 位数字,故用长度 82 的数组当哈希表使用,确实能够提升效率。
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution { |
文章作者: 陆爻齐-LuYaoQi
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!
相关推荐

2025-06-12
【Leetcode Daily】1128等价多米诺骨牌对的数量
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个元素为长度2的vector的vector,找出其中所有元素 vector 相同的对数,其中相同指的是两个 vector,各个元素相同,或者第一个元素与另一个的第二个相同,剩余两个相同。 思路分享 用二维数组当哈希表记录即可,可以选择对一个数对维护两个哈希表位,但哈希表的维护消耗资源其实不小,所以直接调整数对统一数对中的大小相对顺序,就只要用一个位置对应一个数对。比如把(2,1)转化为(1,2)来看。 C++中,可以通过 minmax 构建一个第一个元素小于第二个元素的 pair。 https://leetcode.cn/problems/number-of-equivalent-domino-pairs/solutions/3661647/mei-ju-you-wei-hu-zuo-pythonjavaccgojsru-me3c/ O(n) 枚举的基本思想可以看 【Leetcode Daily】1两数之和。 代码解答(强烈建议自行解答后再看) 参考题解 123456789101112class...

2025-06-13
【Leetcode Daily】121买卖股票的最佳时机-枚举
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个整型数组,说这里的每个数字都是股票加个,你可以在任意时期购买股票并在后面卖出一次,请给出最大利润,若无利润则返回 0. 思路分享 本题可以用动态规划或枚举的方法解决,这里介绍枚举的方法。 可以遍历数字,从左到右,视为找最大值,同时引入一变量记录目前左侧的最小值,不断计算当前最小值与最右值的差的最大值,就能得到答案。 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/solutions/2464650/mei-ju-mai-chu-jie-ge-wei-hu-mai-ru-de-z-02ud/ 无需哈希表,毕竟用记录最小值即可。基础的枚举思路可看 【Leetcode Daily】1两数之和。 代码解答(强烈建议自行解答后再看) 参考题解 123456789101112class Solution {public: int maxProfit(vector<int>& prices) {...

2025-06-10
【Leetcode Daily】1512好数对的数目
题目浅析 想查看原题可以点击题目链接。 简单地说,就是找出数组中所有数值相同的数对(好数对)数目,但是数对内的两个值下标不能相同,且交换位置仍视作一个数对。 思路分享 本题就是很基础的枚举题,如果暴力方法就是一个循环遍历数对左侧,另一循环遍历右侧,复杂度为 O(n^2)。 而相对高效的枚举方法为,只用一次循环,遍历到的数字记录到哈希表上各个数值出现的频次,每次遇到一个值,就可以查其左边有多少相同值,也就出现了多少的好数对。 换句话,就是遍历数对的右侧值,并以 O(1) 的复杂度记录其左侧的情况。 枚举的思路以及先记录答案再更新记录的原因可看 【Leetcode Daily】1两数之和...

2025-07-09
【Leetcode Daily】1524和为奇数的子数组数目
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个整数数组,要求这个数组中所有子数组中和为奇数的数目。 思路分享 前缀和的思路,可以参考 【Leetcode Daily】303区域和检索-数组不可变 虽然是陆爻齐自己思考了出来,但如果没有提前知道是前缀和区域,应该是做不出来的。 回忆解题的过程,就是思考如何快速判定奇数区域时,对做了前缀和了数组观察偶然发现,只要记录此前的奇数和偶数的数目,就能方便地计算现有的数字与此前数字之前区域的和为奇数的数目。 代码解答(强烈建议自行解答后再看) 参考题解 123456789101112131415class Solution: def numOfSubarrays(self, arr: List[int]) -> int: s = list(accumulate(arr, initial=0)) even_num = 0 odd_num = 0 ans = 0 for i in s: if i%2 == 0: ...

2025-06-20
【Leetcode Daily】16-24数对和
题目浅析 想查看原题可以点击题目链接。 简单地说,就是找出一个整型数组中所有的数对(元素为2的整型数组),这些数对的数值之和为 target 思路分享 在昨天题目(【Leetcode Daily】1679K和数对的最大数目)的基础上,不要求数对个数,而是求每个数对的内容,所以只要把记录个数的语句换成记录数对内容的语句即可,不多赘述。 O(n) 枚举的基本思想可以看 【Leetcode Daily】1两数之和。 代码解答(强烈建议自行解答后再看) 参考题解 1234567891011class Solution: def pairSums(self, nums: List[int], target: int) -> List[List[int]]: rec = Counter() res = [] for num in nums: if rec[target-num]: rec[target-num] -= 1 ...

2025-06-19
【Leetcode Daily】1679K和数对的最大数目
题目浅析 想查看原题可以点击题目链接。 简单地说,就是找出一个整型数组中有多少对数字和为 K。(不重复) 思路分享 和 【Leetcode Daily】1两数之和 几乎一致,只是本题要统计数量,之前的题只要找一对下标就行,故不多赘述。 O(n) 枚举的基本思想可以看 【Leetcode Daily】1两数之和。 代码解答(强烈建议自行解答后再看) 参考题解 1234567891011121314class Solution: def maxOperations(self, nums: List[int], k: int) -> int: rec = Counter() res = 0 for num in nums: couple = k - num #print(couple) if rec[couple]: res += 1 rec[couple] -= 1 ...
公告
希望你我都能得偿所愿
PS:相对流水账的文章只能在归档找得到
系列文章
