Giả sử chúng ta có một mảng A với n số và một đầu vào khác K, chúng ta phải tìm chỉ số cuối cùng được giảm xuống 0 sau khi thực hiện một phép toán nhất định. Hoạt động được giải thích như sau -
Bắt đầu từ A [0] đến A [N - 1], cập nhật từng phần tử là A [i] =A [i] - K. Bây giờ, nếu A [i]
Chúng ta phải lặp lại thao tác này cho đến khi tất cả các phần tử giảm xuống còn 0. Và trả về chỉ mục cuối cùng trở thành 0.
Vì vậy, nếu đầu vào là A =[4, 3, 6, 8, 3, 10] và K =4, thì đầu ra sẽ là 5 như các phép toán như bên dưới - Hoạt động 1 - A ={0, 0, 2 , 4, 0, 6} Thao tác 2 - A ={0, 0, 0, 0, 0, 2} Thao tác 3 - A ={0,0, 0, 0, 0, 0}
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
n:=kích thước của A
idx:=-1
đối với tôi trong phạm vi từ 0 đến n, hãy thực hiện
A [i]:=(A [i] + k - 1) / k
đối với tôi trong phạm vi từ 0 đến n, hãy thực hiện
nếu A [i]> =x, thì
x:=A [i]
idx:=i
trả về idx
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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))
Đầu vào
[4, 3, 6, 8, 3, 10], 4
Đầu ra
5