首页 > 解决方案 > 获得数组元素的严格递增序列

问题描述

所以任务是这样的:给你一个整数数组。在每一步中,您都可以将其元素中的一个恰好增加一。找出从输入中获得严格递增序列所需的最小移动次数。

例子:

input_array = [1, 1, 1],输出应该是array_change(input_array) = 3

这是我的代码,它工作正常,它可以正确计算移动,但对于较大的数组,它的运行速度非常慢。我怎样才能优化我的代码来做同样的事情但更快?还是有更好更快的方法来做到这一点?我的代码:

def array_change(input_array):
    l = len(input_array)
    k = 0
    for i in range(1, l):
        while input_array[i - 1] >= input_array[i]:
            input_array[i] += 1
            k += 1
            if input_array[i - 1] == input_array[i]:
                input_array[i] += 1
                k += 1

    return k

标签: pythonpython-3.xlist

解决方案


好的,我刚刚找到了正确的方法。

def arrayChange(iA):
    c = 0
    for i in range(len(iA) - 1):
        if iA[i] >= iA[i + 1]:
            d = iA[i] - iA[i + 1]
            iA[i + 1] += d + 1
            c += d + 1
    return c

推荐阅读