สมมติว่ามีอาร์เรย์ nums ค่าไม่เป็นลบ ต้องหาจำนวนคู่ดัชนี (i, j) ที่เป็น "nice" โดยเงื่อนไข:
0 <= i < j < len(nums)nums[i] + rev(nums[j]) == nums[j] + rev(nums[i])
หมายเหตุ: rev() กลับตัวเลขส่วนบวกเท่านั้น เช่น rev(564) = 465, rev(540) = 45
ตัวอย่าง: nums = [97,2,42,11] ผลลัพธ์ 2 คู่คือ (0,2) และ (1,3)
วิธีแก้ปัญหา
m := 10^9 + 7dic := defaultdict(int)- วน
numในnums:rev := int(str(num)[::-1])dic[num - rev] += 1
res := 0- วน
valในค่าของdic:res += val * (val - 1) // 2
- คืนค่า
res % m
ตัวอย่างโค้ด
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