Python程序:求所有连续子列表的和的总和


假设我们有一个名为nums的数字列表,现在考虑每个连续的子数组。对这些子数组中的每一个求和,并返回所有这些值的总和。最后,将结果模 10 ** 9 + 7。

因此,如果输入类似于 nums = [3, 4, 6],则输出将为 43,因为我们有以下子数组:[3] [4] [6] [3, 4] [4, 6] [3, 4, 6] 所有这些的总和是 43。

为了解决这个问题,我们将遵循以下步骤:

  • N := nums 的大小
  • ans := 0
  • 对于 i 从 0 到 nums 的大小,执行:
    • n := nums[i]
    • ans := ans + (i+1) * (N-i) * n
  • 返回 (ans mod 1000000007)

让我们看看下面的实现以更好地理解:

示例

在线演示

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]))

输入

[3, 4, 6]

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

43

更新于:2020年10月5日

363 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告