मान लीजिए कि हमारे पास केवल 0s और 1s वाली एक सूची है जिसे सीटें कहते हैं। जहां सीटें [i] एक सीट का प्रतिनिधित्व करती हैं। जब यह 1 होता है, तो यह कब्जा कर लिया जाता है, अन्यथा मुक्त। कम से कम एक खाली सीट है और कम से कम एक कब्जा वाली सीट है, हमें एक मुफ्त सीट से निकटतम कब्जे वाली सीट तक की अधिकतम दूरी का पता लगाना है।
इसलिए, अगर इनपुट सीटों की तरह है =[1, 0, 1, 0, 0, 0, 1], तो आउटपुट 2 होगा, क्योंकि हम सीट की सीटों पर कब्जा कर सकते हैं [4], तो दूरी 2 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
रेस :=0
-
अंतिम :=-1
-
n :=सीटों का आकार
-
मैं के लिए 0 से n -1 की सीमा में, करो
-
अगर सीटें[i] 1 है, तो
-
res :=अधिकतम रेस और (i यदि अंतिम <0 अन्यथा (i-last)/2 की मंजिल)
-
अंतिम:=मैं
-
-
-
अधिकतम रेस और (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