Python中查找子数组在初始化数组上形成目标数组的最小增量次数的程序

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程