在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