Posted on 2023-11-21 21:48
Uriel 阅读(20)
评论(0) 编辑 收藏 引用 所属分类:
数学 、
闲来无事重切Leet Code
给出一个数组,问其中有多少个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