宇宙无敌飞天遁地大木木 2025-04-17 09:58 采纳率: 32.5%
浏览 6
已结题

关于#lc-2176#的问题,请各位专家解答!


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
  • 写回答

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
    

    代码解释

    1. 遍历数组,计算每个元素对 k 的余数,并将其作为哈希表的键。
    2. 如果哈希表中已经存在该键,累加该键对应的值。
    3. 更新哈希表中的值。
    4. 最后返回总和。

    时间复杂度

    时间复杂度为 O(n),其中 n 是数组的长度。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月18日
  • 创建了问题 4月17日