मान लीजिए हमारे पास nums नामक एक बाइनरी सरणी है, हम इससे एक तत्व हटा सकते हैं। हमें परिणामी सरणी में केवल 1 वाले सबसे लंबे गैर-खाली सबएरे का आकार ढूंढना है। यदि ऐसा कोई सबएरे नहीं है, तो 0 वापस करें।
उदाहरण के लिए, यदि इनपुट nums = [1,0,1,1,1,0,1,1,0] है, तो आउटपुट 5 होगा क्योंकि स्थिति 5 से 0 हटाकर, हमें सबएरे [1,1,1,1,1] मिल सकता है जिसमें पांच 1 हैं।
हल करने के चरण
यदि nums में 0 नहीं है, तो
nums का आकार - 1 वापस करें
यदि nums में 1 नहीं है, तो
0 वापस करें
a := एक नई सूची
cnt := 0
nums में प्रत्येक i के लिए, करें
यदि i, 0 के समान है, तो
यदि cnt, 0 के समान नहीं है, तो
cnt को a के अंत में डालें
cnt := 0
i को a के अंत में डालें
अन्यथा,
cnt := cnt + 1
यदि cnt, 0 के समान नहीं है, तो
cnt को a के अंत में डालें
Max := 0
i को 0 से a के आकार तक की रेंज में लिए करें
यदि a[i], 0 के समान नहीं है, तो
अगले इटरेशन के लिए जाएं
यदि a[i], 0 के समान है और i, a के आकार - 1 के समान है, तो
Max := Max और a[i-1] का अधिकतम
अन्यथा जब a[i], 0 के समान है और i, 0 के समान है, तो
Max := Max और a[i+1] का अधिकतम
अन्यथा जब a[i], 0 के समान है, तो
Max := Max और (a[i+1] + a[i-1]) का अधिकतम
Max वापस करें
उदाहरण
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