Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาผลรวมของคู่ที่ต่อกันของแต่ละองค์ประกอบในรายการใน Python?


สมมติว่าเรามีรายการหมายเลขที่เรียกว่า 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