在Python中查找所有奇长度子数组的总和的程序

在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], 因此总和= 13
nums[1..3], 因此总和= 15
nums[2..4], 因此总和= 14
nums[0..4] = 25
因此总和为3+8+2+5+7+13+15+14+25 = 92 

为了解决这个问题,我们将按照以下步骤进行 –

  • total:= 0

  • idx:= 0

  • l:=所有奇数索引的列表

  • while idx < l的大小,执行

    • k:= l [idx]

    • for i in range 0到nums的大小,执行

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

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

    • idx:= idx +1

  • return total

更多Python相关文章,请阅读:Python 教程

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程