在 Python 中查找执行给定操作后最后一个被降为零的索引


假设我们有一个包含 n 个数字的数组 A 和另一个输入 K,我们需要找到在执行给定操作后最后一个被降为零的索引。操作解释如下:

从 A[0] 到 A[N – 1],将每个元素更新为 A[i] = A[i] – K。现在,如果 A[i] < K,则将 A[i] 设置为 0,并且一旦 A[i] 为 0,则不再对其进行操作。

我们需要重复此操作,直到所有元素都降为 0。并返回最后一个变为零的索引。

操作 3 - A = {0, 0, 0, 0, 0, 0}

为了解决这个问题,我们将遵循以下步骤:

  • n := A 的大小

  • idx := -1

  • 对于 i 从 0 到 n,执行

    • A[i] :=(A[i] + k - 1) / k

  • 对于 i 从 0 到 n,执行

    • 如果 A[i] >= x,则

      • x := A[i]

      • idx := i

  • 返回 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

更新于:2020-08-19

95 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告