สมมติว่าเรามีรายการหมายเลขที่เรียกว่า nums เราต้องหาผลรวมของการต่อกันของตัวเลขทุกคู่เป็นตัวเลข ในที่นี้ คู่ (i, j) และ คู่ (j, i) ถือว่าต่างกัน
ดังนั้น หากอินพุตเป็นเหมือน nums =[5, 3] ผลลัพธ์จะเป็น 176 เนื่องจากเรามีการต่อกันดังต่อไปนี้:(nums[0] + nums[0]) =(5 concat 5) =55, ( nums[0] + nums[1]) =(5 concat 3) =53, (nums[1] + nums[0]) =(3 concat 5) =35, (nums[0] + nums[0]) =(3 ต่อ 3) =33 แล้วผลรวมคือ 55 + 53 + 35 + 33 =176
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
memo := a new map nums1 := nums temp := 0 c := sum of all elements in nums1 a := size of nums for i in range 0 to a, do if nums[i] is same as 0, then temp := temp + c otherwise, if nums[i] is present in memo, then temp := temp + memo[nums[i]] otherwise, b := 0 for j in range 0 to a, do b := b + integer of (nums[i] concatenate nums1[j]) memo[nums[i]] := b temp := temp + memo[nums[i]] return temp
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:
ตัวอย่าง
class Solution:
def solve(self, nums):
memo = {}
nums1 = nums
temp = 0
c = sum(nums1)
a = len(nums)
for i in range(a):
if nums[i] == 0:
temp += c
else:
if nums[i] in memo:
temp += memo[nums[i]]
else:
b = 0
for j in range(a):
b += int(str(nums[i]) + str(nums1[j]))
memo[nums[i]] = b
temp += memo[nums[i]]
return temp
ob = Solution()
nums = [5, 3]
print(ob.solve(nums)) อินพุต
[5, 3]
ผลลัพธ์
176