在Python中找出将列表转换为非递增列表所需的操作数
假设我们有一个名为nums的数字列表。现在让我们考虑一个操作,其中我们取两个连续的值并将其合并为一个值,方法是取它们的和。我们必须找到所需的最小操作数,以使列表变为非递增。
因此,如果输入如下所示:nums = [2, 6, 4, 10, 2],则输出将为2,因为我们可以合并[2,6]以获得[8, 4, 10, 2],然后合并[8, 4]以获得[12, 10, 2]。
要解决这个问题,我们将按照以下步骤执行-
- 如果nums为空,则
- 返回0
- 在nums的末尾插入-inf
- N := nums的大小
- dp :=一个大小为N的列表,并用0填充
- arr: = 一个大小为N的列表,并用0填充
- p: = arr的大小
- arr[p-1] := nums[N-1]
- arr[p-2] := nums[N-2]
- 对于i在范围N – 3到0,每次递减1,执行以下操作
- j := i
- x := nums j
- 当j
- j := j +1
- x: = x + nums [j]
- dp [i]: = j-i + dp [j + 1]
- arr [i]: = x
- 返回dp [0]
让我们来看看以下实现,以更好地理解-