मान लीजिए हमारे पास एक बाइनरी सरणी है। हमें 0 की स्थिति ढूंढनी है जिसे 1 से बदलकर 1s का अधिकतम सतत अनुक्रम प्राप्त किया जा सके।
तो, यदि इनपुट [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1] की तरह है, तो आउटपुट 10 होगा, ताकि सरणी [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1] हो जाए।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
i := 0,
n := A का आकार
count_left := 0, count_right := 0
max_i := -1, last_i := -1
count_max := 0
जब i < n, करें
यदि A[i], 1 के समान है, तो
count_right := count_right + 1
अन्यथा,
यदि last_i, -1 के समान नहीं है, तो
यदि count_right + count_left + 1 > count_max, तो
count_max := count_left + count_right + 1
max_i := last_i
last_i := i
count_left := count_right
count_right := 0
i := i + 1
यदि last_i, -1 के समान नहीं है, तो
यदि count_left + count_right + 1 > count_max, तो
count_max := count_left + count_right + 1
max_i := last_i
max_i वापस करें
उदाहरण
बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def find_max_one_index(A): i = 0 n = len(A) count_left = 0 count_right = 0 max_i = -1 last_i = -1 count_max = 0 while i < n: if A[i] == 1: count_right += 1 else: if last_i != -1: if count_right + count_left + 1 > count_max: count_max = count_left + count_right + 1 max_i = last_i last_i = i count_left = count_right count_right = 0 i += 1 if last_i != -1: if count_left + count_right + 1 > count_max: count_max = count_left + count_right + 1 max_i = last_i return max_i A = [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1] print(find_max_one_index(A))
इनपुट
[1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1]
आउटपुट
10