[LeetCode]1814. Count Nice Pairs in an Array (Medium) Python-2023.11.21
Posted on 2023-11-21 21:48 Uriel 閱讀(56) 評論(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出現次數然后累加
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
#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


