在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