在Python中执行给定操作后,找到最后减少为零的索引

假设我们有一个具有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
猜你喜欢