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]

輸出

43

更新於:2020年10月5日

363 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.