📅  最后修改于: 2023-12-03 15:42:18.936000             🧑  作者: Mango
这是GATE-CS-2017(Set 1)的第6个问题,主要考察编程问题的解决能力。题目描述如下:
给定一个数组A,它包含n个正整数。对于每个i (1 ≤ i ≤ n),找到最小的j (j ≥ i),使得A[j] > A[i] 或者没有这样的j,然后输出j-i-1。
以下是一个示例: Input: A = {6, 7, 3, 4, 5, 6, 1, 2} Output: {1, 3, 2, 2, 1, 1, 7, 7}
时间复杂度为O(n),因为我们遍历了一次数组A。
以下是Python代码的实现,返回值为结果集res。
def find_minimum_distance_to_greater_number(A):
n = len(A)
res = [0]*n
i = 0
while i < n:
j = i+1
while j < n and A[j] <= A[i]:
j += 1
if j == n:
res[i] = n-i-1
else:
res[i] = j-i-1
i += 1
return res