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

โปรแกรมหาผลรวมของผลรวมทุกสับลิสต์ที่ติดต่อกันใน Python

ให้ลิสต์ตัวเลข nums หาผลรวมของผลรวมทุก subarray ที่ติดต่อกัน แล้ว mod 1e9+7

ตัวอย่าง: [3,4,6] → subarrays: [3],[4],[6],[3,4],[4,6],[3,4,6] → sum = 43

สูตรคณิตศาสตร์

อีเล็มน์ต์ที่ดัชนี i จะปรากฏใน subarray จำนวน (i+1) * (N-i) ครั้ง (N = ความยาวลิสต์)

การนำไปใช้

class Solution:
    def solve(self, nums):
        N = len(nums)
        ans = 0
        for i in range(len(nums)):
            n = nums[i]
            ans += (i + 1) * (N - i) * n
        return ans % 1000000007

ob = Solution()
print(ob.solve([3, 4, 6]))  # 43