是否存在解决以下问题的方法,该方法具有更好的时间复杂度:

时间:2018-10-12 14:04:34

标签: algorithm performance

有一个输入整数数组,您必须创建一个输出数组,该数组指示输入数组中的每个值要等待多少索引才能获得更高的值。如果直到输入数组的末尾没有更高的值,则将-1

示例:

输入:[10、8、6、8、8、11、9] 输出:[5,4,1,2,1,-1,-1]

输入:[6、5、4、3、2、1] 输出:[-1,-1,-1,-1,-1,-1]

输入:[6、3、51、42、3、22、12] 输出:[2,1,-1,-1,1,-1,-1]

在最坏的情况下,我想出了一个简单的解决方案,时间复杂度为O(n2)。有更好的解决方案吗?

def func(input_arr):
output_arr = []
for p in range(0, len(input_arr)):
    found = False
    for i in range(p+1, len(input_arr)):
        if input_arr[i]>input_arr[p]:
            found = True
            output_arr.append(i-p)
            break
    if not found:
        output_arr.append(-1)
return output_arr

0 个答案:

没有答案