একটি বাইনারি অ্যারে nums দেওয়া আছে। আমরা একটা উপাদান ডিলিট করতে পারি। ডিলিট করার পর ফলাফল অ্যারেতে শুধু ১ দিয়ে গঠিত সর্বোচ্চ দৈর্ঘ্যের নন-খালি সাবঅ্যারের আকার বের করতে হবে। এমন সাবঅ্যারে না থাকলে ০ ফেরত দিন।
যেমন, nums = [1,0,1,1,1,0,1,1,0] হলে আউটপুট ৫। কারণ ৫ নম্বর ইনডেক্সের ০ ডিলিট করলে [1,1,1,1,1] পাওয়া যায়।
সমাধানের ধাপসমূহ
- যদি nums-এ ০ নেই, তবে len(nums) - 1 ফেরত দিন।
- যদি nums-এ ১ নেই, তবে ০ ফেরত দিন।
- a := খালি লিস্ট, cnt := 0
- nums-এর প্রতিটি i এর জন্য:
- যদি i == 0 হয়:
- যদি cnt != 0 হয়, তবে a-তে cnt যোগ করুন, cnt := 0
- a-তে i (০) যোগ করুন।
- অন্যথায়, cnt := cnt + 1
- যদি cnt != 0 হয়, তবে a-তে cnt যোগ করুন।
- Max := 0
- a-এর প্রতিটি ইনডেক্স i এর জন্য:
- যদি a[i] != 0 হয়, তবে চালিয়ে যান।
- যদি a[i] == 0 এবং i == len(a)-1 হয়, তবে Max := max(Max, a[i-1])
- যদি a[i] == 0 এবং i == 0 হয়, তবে Max := max(Max, a[i+1])
- অন্যথায় (মাঝপথে ০ হলে), Max := 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