class Solution:
def countPairs(self, nums: List[int], k: int) -> int:
n = len(nums)
ans = 0
for i in range(n):
for j in range(i + 1,n):
if nums[i] == nums[j] and i * j % 2 == 0:
ans += 1
return ans
关于#lc-2176#的问题,请各位专家解答!
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
阿里嘎多学长 2025-04-17 09:58关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
解答
问题是 LeetCode 问题 #2176,要求统计数组中所有可能的数对(i, j),满足 nums[i] % k == nums[j] % k。
可以使用哈希表来解决这个问题。首先,遍历数组,计算每个元素对 k 的余数,并将其作为哈希表的键,值为该元素的出现次数。
然后,遍历哈希表,计算每个键对应的值的平方和,最后返回总和。
以下是 Python 代码:
class Solution: def countPairs(self, nums: List[int], k: int) -> int: n = len(nums) count = 0 hash_map = {} for num in nums: remainder = num % k if remainder in hash_map: count += hash_map[remainder] hash_map[remainder] = hash_map.get(remainder, 0) + 1 return count代码解释
- 遍历数组,计算每个元素对 k 的余数,并将其作为哈希表的键。
- 如果哈希表中已经存在该键,累加该键对应的值。
- 更新哈希表中的值。
- 最后返回总和。
时间复杂度
时间复杂度为 O(n),其中 n 是数组的长度。
解决 无用评论 打赏 举报