মনে করুন seats শুধু ০ এবং ১ ধারণকারী একটি লিস্ট। seats[i] একটি সিট প্রতিনিধিত্ব করে। ১ হলে заняস্ত, ০ হলে খালি। কমপক্ষে একটি খালি এবং একটি заняস্ত সিট আছে, আমাদের খালি সিট থেকে নিকটতম заняস্ত সিটের সর্বাধিক দূরত্ব বের করতে হবে।
ইনপুট seats = [1, 0, 1, 0, 0, 0, 1] হলে আউটপুট হবে ২, কারণ seats[4] নিয়মে দূরত্ব ২।
সমাধানের ধাপসমূহ:
- res := 0, last := -1, n := len(seats)
- i = 0 থেকে n-1 পর্যন্ত:
- যদি seats[i] == 1:
- res := max(res, i if last < 0 else (i - last) // 2)
- last := i
- যদি seats[i] == 1:
- max(res, n - last - 1) ফেরত দিন
উদাহরণ
বাস্তবায়ন:
def solve(seats):
res, last, n = 0, -1, len(seats)
for i in range(n):
if seats[i]:
res = max(res, i if last < 0 else (i - last) // 2)
last = i
return max(res, n - last - 1)
seats = [1, 0, 1, 0, 0, 0, 1]
print(solve(seats))
ইনপুট
[1, 0, 1, 0, 0, 0, 1]
আউটপুট
2