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

โปรแกรมหาผลรวมของความแตกต่างแบบสัมบูรณ์ของทุกคู่ในรายการที่จัดเรียงใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องหาผลรวมของผลต่างสัมบูรณ์ระหว่างตัวเลขทุกคู่ในรายการที่กำหนด เราจะพิจารณา (i, j) และ (j, i) เป็นคู่ที่แตกต่างกัน หากคำตอบมีขนาดใหญ่มาก ให้แก้ไขผลลัพธ์ 10^9+7

ดังนั้น หากอินพุตเป็น nums =[2, 4, 8] เอาต์พุตจะเป็น 24 เป็น |2 - 4| + |2 - 8| + |4 - 2| + |4 - 8| + |8 - 2| + |8 - 4|.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ม. =10^9 + 7

  • รวม :=0

  • สำหรับฉันในช่วง 0 ถึงขนาดของ nums ทำ

    • รวม :=รวม +(i*nums[i] - (ขนาดของ nums - 1 - i) *nums[i]) mod m

  • กลับ (2*total) mod m

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, nums):
      m = 10**9 + 7
      total = 0
      for i in range(len(nums)):
         total += (i*nums[i] - (len(nums) - 1 - i)*nums[i]) % m
      return (2*total) % m
ob = Solution()
nums = [2, 4, 8]
print(ob.solve(nums))

อินพุต

[2, 4, 8]

ผลลัพธ์

24