मान लीजिए हमें n सीटों की रिजर्वेशन स्थिति का प्रबंधन करने वाली एक प्रणाली डिजाइन करनी है। सीटें 1 से n तक संख्या दी गई हैं। तो हमें SeatReserveManager क्लास लागू करनी है, इन फंक्शन्स के साथ:
कंस्ट्रक्टर जो n लेता है और 1 से n तक संख्या दी गई n सीटों का प्रबंधन करने वाली ऑब्जेक्ट को इनिशियलाइज़ करता है। प्रारंभ में सभी सीटें उपलब्ध हैं।
reserve(), यह सबसे छोटी संख्या वाली अनारक्षित सीट लाएगा, फिर उसे रिजर्व करेगा, और उसका नंबर लौटाएगा।
unreserve(seatNumber), यह दिए गए seatNumber के साथ एक रिजर्व्ड सीट को अनारक्षित करेगा।
उदाहरण के लिए, यदि इनपुट है:
obj = SeatReserveManager(7)
obj.reserve()
obj.reserve()
obj.reserve()
obj.unreserve(2)
obj.unreserve(5)
obj.reserve()
obj.reserve()
तो आउटपुट होगा 1, 2, 3, 2, 5, प्रारंभ में तीन सीटें 1, 2, 3 रिजर्व होती हैं, फिर 2 और 5 अनारक्षित होती हैं लेकिन 5 अभी तक रिजर्व नहीं है, फिर अगली बार 5 रिजर्व होती है।
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्न चरणों का पालन करेंगे:
कंस्ट्रक्टर() परिभाषित करें। यह n लेगा
current_seat := 0
empty_seats := एक नई सूची
reserve() फंक्शन परिभाषित करें
यदि empty_seats की लंबाई > 0, तो
s := empty_seats का न्यूनतम
empty_seats से s को हटाएं
s लौटाएं
current_seat := current_seat + 1
current_seat लौटाएं
unreserve() फंक्शन परिभाषित करें। यह seatNumber लेगा
seatNumber को empty_seats के अंत में डालें
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
class SeatReserveManager:
def __init__(self, n):
self.current_seat = 0
self.empty_seats = []
def reserve(self):
if len(self.empty_seats) > 0:
s = min(self.empty_seats)
self.empty_seats.remove(s)
return s
self.current_seat += 1
return self.current_seat
def unreserve(self, seatNumber):
self.empty_seats.append(seatNumber)
obj = SeatReserveManager(7)
print(obj.reserve())
print(obj.reserve())
print(obj.reserve())
obj.unreserve(2)
obj.unreserve(5)
print(obj.reserve())
print(obj.reserve())इनपुट
obj = SeatReserveManager(7) print(obj.reserve()) print(obj.reserve()) print(obj.reserve()) obj.unreserve(2) obj.unreserve(5) print(obj.reserve()) print(obj.reserve())
आउटपुट
1 2 3 2 5