Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
给出一个数组,问其中有多少个a,b数对,符合a+rev(b)=b+rev(a),rev为数字反转
a+rev(b)=b+rev(a) -> a - rev(a) + b - rev(b) = 0,所以预处理所有a-rev(a),然后用Counter计算每种value出现次数然后累加


#1814
#
Runtime: 586 ms (Beats 78.13%)
#
Memory: 23 MB (Beats 43.75%)

class Solution(object):
    def countNicePairs(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        
"""
        nums = [x - int(str(x)[::-1]) for x in nums]
        ans = 0
        for x in Counter(nums).values():
            ans = (ans + (x - 1) * x // 2) % (10**9 + 7)
        return ans

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理