मान लीजिए कि हमारे पास एक द्विआधारी सरणी है जिसे अंक कहा जाता है, हम इसमें से एक तत्व को हटा सकते हैं। हमें सबसे लंबे गैर-रिक्त उप-सरणी का आकार ढूंढना है जिसमें परिणामी सरणी में केवल 1 है। यदि ऐसा कोई उप-सरणी नहीं है, तो 0 पर लौटें।
इसलिए, यदि इनपुट nums =[1,0,1,1,1,0,1,1,0] की तरह है, तो आउटपुट 5 होगा क्योंकि स्थिति 5 से 0 को हटाकर, हम एक सबएरे प्राप्त कर सकते हैं [1 ,1,1,1,1] पांच 1 होते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अगर 0 अंकों में नहीं है, तो
-
अंकों का वापसी आकार - 1
-
-
अगर 1 अंकों में नहीं है, तो
-
वापसी 0
-
-
a :=एक नई सूची
-
सीएनटी:=0
-
प्रत्येक के लिए मैं अंकों में, करता हूं
-
अगर मैं 0 के समान हूं, तो
-
अगर cnt 0 के समान नहीं है, तो
-
a के अंत में cnt डालें
-
सीएनटी:=0
-
-
a के अंत में i डालें
-
अन्यथा,
-
सीएनटी:=सीएनटी + 1
-
-
-
-
अगर cnt 0 के समान नहीं है, तो
-
a के अंत में cnt डालें
-
-
अधिकतम:=0
-
मैं के लिए 0 से ए के आकार की सीमा में, करो
-
अगर a[i] 0 के समान नहीं है, तो
-
अगले पुनरावृत्ति के लिए जाएं
-
-
अगर एक [i] 0 के समान है और मैं एक -1 के आकार के समान है, तो
-
अधिकतम :=अधिकतम अधिकतम और a[i-1]
-
-
अन्यथा जब a[i] 0 के समान है और i 0 के समान है, तो
-
अधिकतम :=अधिकतम अधिकतम और a[i+1]
-
-
अन्यथा जब a[i] 0 के समान हो, तब
-
अधिकतम :=अधिकतम अधिकतम और (a[i+1]+a[i-1])
-
-
-
वापसी अधिकतम
उदाहरण
def solve(nums): if 0 not in nums: return len(nums)-1 if 1 not in nums: return 0 a = [] cnt = 0 for i in nums: if i == 0: if cnt != 0: a.append(cnt) cnt = 0 a.append(i) else: cnt += 1 if cnt!=0: a.append(cnt) Max = 0 for i in range(len(a)): if a[i] != 0: continue if a[i] == 0 and i == len(a)-1: Max = max(Max,a[i-1]) elif a[i] == 0 and i == 0: Max = max(Max,a[i+1]) elif a[i] == 0: Max = max(Max,a[i+1]+a[i-1]) return Max nums = [1,0,1,1,1,0,1,1,0] print(solve(nums))
इनपुट
[1,0,1,1,1,0,1,1,0]
आउटपुट
5