Python中查找子数组在初始化数组上形成目标数组的最小增量次数的程序
假设我们有一个称为目标的正值数组。现在考虑一个初始大小相同的零数组。如果进行以下操作:(从初始化数组中选择任何子数组并将每个值增加1),我们必须找到从初始化生成目标数组所需的最小操作数。
因此,如果输入是target=[2,3,4,3,2],那么输出将为4,因为最初的数组是[0,0,0,0,0]。首先从索引0到4选择子数组并将其增加1,因此数组将会变为[1,1,1,1,1],然后再次从索引0到4选择以将其变为[2,2,2,2,2],然后选择从索引1到3的元素并增加,所以数组将为[2,3,3,3,2],最后选择索引2并使数组[2,3,4,3,2]与目标相同。
为了解决这个问题,我们将按照以下步骤进行-
- prev_num := 0
- steps := 0
- 对于目标中的每个值,做如下操作
- 如果val > prev_num,那么steps := steps + val – prev_num,否则相当于0
- prev_num := val
- 返回步骤steps
例子
让我们看以下实现以获得更好的理解
def solve(target):
prev_num = 0
steps = 0
for val in target:
steps += val-prev_num if val > prev_num else 0
prev_num = val
return steps
target = [2,3,4,3,2]
print(solve(target))
输入
[2,3,4,3,2]
输出
4