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