leetcode-11:1814. 统计一个数组中好对子的数目

Posted 坚持不懈的大白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-11:1814. 统计一个数组中好对子的数目相关的知识,希望对你有一定的参考价值。

原题为:
给你一个数组 nums ,数组中只包含非负整数。定义 rev(x) 的值为将整数 x 各个数字位反转得到的结果。比方说 rev(123) = 321 , rev(120) = 21 。我们称满足下面条件的下标对 (i, j) 是 好的 :

  • 0 <= i < j < nums.length
  • nums[i] + rev(nums[j]) == nums[j] + rev(nums[i])

请你返回好下标对的数目。由于结果可能会很大,请将结果对 109 + 7 取余 后返回。

算法思路:(使用编程语言:Python)
不知道读者有没有仔细观看上述这个例子,42+79=97+24,细心点你就会发现为什么这个等式是成立的呢?原因在这:因为 97-79=18,42-24=18,所以上述等式成立,那么,这个算法题目就变得简单了哈!我们定义一个字典,然后遍历一下这个列表(数组),将原数-变化后的数取的值放到数组中用于计数,然后再遍历一下字典中的值,利用数学公式()最后即可获取最终结果。(描述可能不是很清楚,还是看代码吧!)

参考代码如下:

class Solution(object):
    def countNicePairs(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        dict1 = 
        for i in range(len(nums)):
            c = nums[i]-self.__rev(nums[i])
            dict1[c] = dict1.get(c,0) + 1
        count = 0
        for v in dict1.values():
            count += v*(v-1)//2

        return count%(10**9 + 7)
    
    def __rev(self,num):
        return int(str(num)[::-1])

以上是关于leetcode-11:1814. 统计一个数组中好对子的数目的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-11:1814. 统计一个数组中好对子的数目

C#中怎样统计数组中一个一维数组中每个元素出现的次数?

matlab怎么来统计数组元素个数

php 统计二维数组中某个相等值的总个数,并且组合成一个新的数组

C语言 统计数组每个元素个数

统计数字在排序数组中出现的次数