मान लीजिए कि हमारे पास एक संख्या n है, n संख्या में लोग एक सीट की तलाश में हैं, हमारे पास बिट्स की एक सूची भी है जहां 1 पहले से ही भरी हुई सीट का प्रतिनिधित्व करता है और 0 खाली सीट का प्रतिनिधित्व करता है। कोई भी दो व्यक्ति एक दूसरे के बगल में नहीं बैठ सकते हैं, इसलिए हमें यह जांचना होगा कि सभी n लोगों को सीट मिल सकती है या नहीं।
इसलिए, अगर इनपुट n =2 सीट =[1, 0, 0, 0, 1, 0, 0] जैसा है, तो आउटपुट सही होगा, क्योंकि वे इंडेक्स 2 और 6 पर बैठ सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- सीटों की शुरुआत में 0 डालें और सीटों के अंत में [0, 1] डालें
- res:=0, गैप:=0
- प्रत्येक i सीट के लिए, करें
- यदि मैं 0 के समान है, तो
- अंतराल:=अंतराल + 1
- अन्यथा जब गैप> 0, तब
- res :=res + तल (अंतर -1)/2
- अंतराल:=0
- यदि मैं 0 के समान है, तो
- सही लौटें जब res>=n अन्यथा गलत हो
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n, seats): seats = [0] + seats + [0, 1] res = 0 gap = 0 for i in seats: if i == 0: gap += 1 elif gap > 0: res += (gap - 1) // 2 gap = 0 return res >= n n = 2 seats = [1, 0, 0, 0, 1, 0, 0] print(solve(n, seats))
इनपुट
2, [1, 0, 0, 0, 1, 0, 0]
आउटपुट
True