मान लीजिए हमारे पास n संख्याओं का एक ऐरे A है और एक और इनपुट K है, हमें वह इंडेक्स ढूंढना है जो दिए गए ऑपरेशन को करने के बाद अंत में शून्य हो जाएगा। ऑपरेशन इस प्रकार समझाया गया है:
A[0] से A[N-1] से शुरू करके, प्रत्येक तत्व को A[i] = A[i] - K के रूप में अपडेट करें। अब, यदि A[i] < K तो A[i] = 0 रखें और एक बार 0 होने पर A[i] पर कोई और ऑपरेशन नहीं किया जाएगा।
हमें ऑपरेशन को तब तक दोहराना है जब तक सभी तत्व 0 तक कम नहीं हो जाते। और वह इंडेक्स लौटाएं जो अंत में शून्य बनेगा।
तो, यदि इनपुट A = [4, 3, 6, 8, 3, 10] और K = 4 जैसा है, तो आउटपुट 5 होगा क्योंकि ऑपरेशन इस प्रकार हैं: ऑपरेशन 1 - A = {0, 0, 2, 4, 0, 6} ऑपरेशन 2 - A = {0, 0, 0, 0, 0, 2} ऑपरेशन 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