मान लीजिए कि हमारे पास अनुरोधित_ट्रिप्स नामक एक मैट्रिक्स है जहां प्रत्येक पंक्ति में [start_x, end_x, num_passengers] है, और हमारे पास क्षमता मान भी है। अब प्रत्येक अनुरोधित यात्रा num_यात्री यात्रियों को start_x पर लेने और उन्हें end_x पर छोड़ने के लिए कहती है। हमारे पास क्षमता के साथ एक कार भी है जो दी गई है, और स्थिति x =0 से शुरू होती है। हम प्रत्येक यात्री को उठाना चाहते हैं और केवल दाईं ओर जा सकते हैं, हमें यह जांचना होगा कि क्या हम सभी को उठा सकते हैं और छोड़ सकते हैं।पी>
इसलिए, यदि इनपुट ट्रिप =[[1, 25, 2], [3, 4, 3], [5, 12, 3]] क्षमता =6 जैसा है, तो आउटपुट सही होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
ईवेंट :=एक नई सूची
-
यात्राओं में प्रत्येक सेट (एसएक्स, पूर्व, एनपी) के लिए, करें
-
इवेंट के अंत में जोड़ी (sx, np) डालें
-
इवेंट के अंत में जोड़ी डालें (उदा, −np)
-
-
ले जाना :=0
-
घटनाओं की सूची में प्रत्येक जोड़ी (लोक, डेल्टा) के लिए (क्रमबद्ध क्रम में), करें
-
ले जाना :=ले जाना + डेल्टा
-
अगर वहन> क्षमता, तो
-
झूठी वापसी
-
-
-
सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, trips, capacity): events = [] for sx, ex, np in trips: events.append((sx, np)) events.append((ex, -np)) carrying = 0 for loc, delta in sorted(events): carrying += delta if carrying > capacity: return False return True ob = Solution() trips = [ [1, 25, 2], [3, 4, 3], [5, 12, 3] ] capacity = 6 print(ob.solve(trips, capacity))
इनपुट
trips = [ [1, 25, 2], [3, 4, 3], [5, 12, 3] ] capacity = 6
आउटपुट
True