मान लीजिए कि हमारे पास एक बाइनरी ऐरे है। हमें 0 की स्थिति का पता लगाना है जिसे 1 से बदला जा सकता है ताकि 1s के निरंतर अनुक्रम की अधिकतम संख्या प्राप्त हो सके।
इसलिए, यदि इनपुट [1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1] जैसा है, तो आउटपुट 10 होगा, इसलिए सरणी [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
मैं :=0,
-
n :=A का आकार
-
count_left:=0, count_right:=0
-
max_i :=-1, last_i :=-1
-
गिनती_मैक्स:=0
-
जबकि मैं
-
अगर A[i] 1 के समान है, तो
-
count_right :=count_right + 1
-
-
अन्यथा,
-
अगर last_i -1 के समान नहीं है, तो
-
अगर काउंट_राइट + काउंट_लेफ्ट + 1> काउंट_मैक्स, तो
-
count_max :=count_left + count_right + 1
-
max_i :=last_i
-
-
-
last_i :=मैं
-
काउंट_लेफ्ट:=काउंट_राइट
-
count_right:=0
-
-
मैं :=मैं + 1
-
-
अगर last_i -1 के समान नहीं है, तो
-
अगर काउंट_लेफ्ट + काउंट_राइट + 1> काउंट_मैक्स, तो
-
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