Python程式:查詢所有奇數長度子陣列的和


假設我們有一個名為 nums 的正數陣列,我們需要找到所有可能的奇數長度子陣列的和。眾所周知,子陣列是陣列的連續子序列。我們需要找到 nums 的所有奇數長度子陣列的和。

因此,如果輸入類似於 nums = [3,8,2,5,7],則輸出將是奇數長度子陣列為 -

nums[0] = 3
nums[1] = 8
nums[2] = 2
nums[3] = 5
nums[4] = 7
nums[0..2], so sum = 13
nums[1..3], so sum = 15
nums[2..4], so sum = 14
nums[0..4] = 25
So total sum is 3+8+2+5+7+13+15+14+25 = 92

為了解決這個問題,我們將遵循以下步驟 -

  • total:= 0

  • idx:= 0

  • l:= 所有奇數位置索引的列表

  • 當 idx < l 的大小 時,執行

    • k:= l[idx]

    • 對於範圍從 0 到 nums 大小的 i,執行

      • 如果 i+k < nums 的大小 + 1,則

        • total := total + nums 中從索引 i 到 i+k-1 的所有元素的和

    • idx := idx + 1

  • 返回 total

示例(Python)

讓我們看看以下實現以獲得更好的理解 -

 線上演示

def solve(nums):
   total=0
   idx=0
   l=[i for i in range(len(nums)+1) if i%2!=0]

   while(idx<len(l)):
      k=l[idx]
      for i in range(len(nums)):
         if i+k < len(nums)+1:
            total+=sum(nums[i:i+k])
      idx+=1
   return total

nums = [3,8,2,5,7]
print(solve(nums))

輸入

[3,8,2,5,7]

輸出

92

更新於: 2021年5月17日

439 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告