在 Python 中计算数组中好的对的程序
假设我们有一个名为nums的数组,其中包含非负值。我们必须找到数组中存在的好对索引,如果答案太大,则返回答案mod10^9+7。这里一对索引(i,j)在满足所有这些条件时被认为是好的:1.0<=i 注意-这里rev()仅反转整数的正数部分,因此如果rev(564)存在,则表示465,但如果rev(540)存在,则返回45。 因此,如果输入类似于nums=[97,2,42,11],那么输出将为2,因为有两对(0,2)和(1,3),对于第一个[97+rev(42)=97+24=121,和42+rev(97)=42+79=121]和第二个[2+rev(11)=2+11=13和11+rev(2)=13]。 让我们看看以下实现以获得更好的理解-示例
from collections import defaultdict
def solve(nums):
m = (10**9)+7
dic = defaultdict(int)
for num in nums:
rev=int(str(num)[::-1])
dic[num-rev]+=1
res=0
for val in dic.values():
res += (val*(val-1)) //2
return res % m
nums = [97,2,42,11]
print(solve(nums))
输入
[97,2,42,11]输出结果
2