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