3712. 出现次数能被 K 整除的元素总和
题目描述
给你一个整数数组 nums
和一个整数 k
。
请返回一个整数,表示 nums
中所有其 出现次数 能被 k
整除的元素的总和;如果没有这样的元素,则返回 0 。
注意: 若某个元素在数组中的总出现次数能被 k
整除,则它在求和中会被计算 恰好 与其出现次数相同的次数。
元素 x
的 出现次数 指它在数组中出现的次数。
示例 1:
输入: nums = [1,2,2,3,3,3,3,4], k = 2
输出: 16
解释:
- 数字 1 出现 1 次(奇数次)。
- 数字 2 出现 2 次(偶数次)。
- 数字 3 出现 4 次(偶数次)。
- 数字 4 出现 1 次(奇数次)。
因此总和为 2 + 2 + 3 + 3 + 3 + 3 = 16
。
示例 2:
输入: nums = [1,2,3,4,5], k = 2
输出: 0
解释:
没有元素出现偶数次,因此总和为 0。
示例 3:
输入: nums = [4,4,4,1,2,3], k = 3
输出: 12
解释:
- 数字 1 出现 1 次。
- 数字 2 出现 1 次。
- 数字 3 出现 1 次。
- 数字 4 出现 3 次。
因此总和为 4 + 4 + 4 = 12
。
提示:
1 <= nums.length <= 100
1 <= nums[i] <= 100
1 <= k <= 100
解法
方法一:计数
我们用一个哈希表 \(\textit{cnt}\) 来记录每个数字的出现次数。遍历数组 \(\textit{nums}\),对于每个数字 \(x\),我们将 \(\textit{cnt}[x]\) 增加 \(1\)。
然后,我们遍历哈希表 \(\textit{cnt}\),对于每个元素 \(x\),如果它的出现次数 \(\textit{cnt}[x]\) 能被 \(k\) 整除,就将 \(x\) 乘以它的出现次数加到结果中。
时间复杂度为 \(O(n)\),其中 \(n\) 是数组的长度。空间复杂度为 \(O(m)\),其中 \(m\) 是数组中不同元素的数量。
1 2 3 4 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|