在 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

示例(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

猜你喜欢