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 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.