假设我们有一个具有n个数字的数组A和另一个输入K,我们必须找到执行给定操作后将最后减少为零的索引。操作说明如下-
从A [0]到A [N – 1],将每个元素更新为A [i] = A [i] –K。现在,如果A [i] <K,则将A [i] = 0放开A [i]为0时将对其进行运算。
我们必须重复该操作,直到所有元素都减小为0。然后返回将成为最后一个变为零的索引。
因此,如果输入像A = [4、3、6、8、3、10]且K = 4,则输出将是5,因为操作如下-运算1-A = {0,0,2 ,4,4,6}运算2 − A = {0,0,0,0,0,2}运算3 − A = {0,0,0,0,0,0}
为了解决这个问题,我们将遵循以下步骤-
n:= A的大小
idx:= -1
对于0到n范围内的i,执行
A [i]:=(A [i] + k-1)/ k
对于0到n范围内的i,执行
x:= A [i]
idx:=我
如果A [i]> = x,则
返回idx
让我们看下面的实现以更好地理解-
def search_index(A, k): n = len(A) idx = -1 x = -10**9 for i in range(n): A[i] = (A[i] + k - 1) // k for i in range(n): if (A[i] >= x): x = A[i] idx = i return idx arr = [4, 3, 6, 8, 3, 10] K = 4 print(search_index(arr, K))
[4, 3, 6, 8, 3, 10], 4
输出结果
5