मान लीजिए कि हम धारा में kth सबसे बड़ा तत्व खोजने के लिए एक वर्ग डिजाइन करना चाहते हैं। यह क्रमबद्ध क्रम में kth सबसे बड़ा तत्व है, kth विशिष्ट तत्व नहीं है।
KthLargest वर्ग में एक कंस्ट्रक्टर होगा जो एक पूर्णांक k और एक सरणी संख्या को स्वीकार करता है, जिसमें स्ट्रीम से प्रारंभिक तत्व होंगे। KthLargest.add विधि में प्रत्येक कॉल के लिए, स्ट्रीम में kth सबसे बड़े तत्व का प्रतिनिधित्व करने वाला तत्व लौटाएगा।
इसलिए, यदि इनपुट k =3 की तरह है, प्रारंभिक तत्व =[4,5,8,2], तो कॉल जोड़ें(3), जोड़ें(5), जोड़ें(10), जोड़ें(9), जोड़ें(4) . , तो आउटपुट क्रमशः 4,5,5,8,8 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- इनिशियलाइज़र को परिभाषित करें, इसमें k, अंक लगेंगे
- सरणी:=अंक
- एक फंक्शन ऐड () को परिभाषित करें। इसमें वैल लगेगा
- सरणी के अंत में वैल डालें
- सरणी क्रमबद्ध करें
- रिटर्न ऐरे [सरणी का आकार -k]
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class KthLargest: def __init__(self, k, nums): self.array = nums self.k = k def add(self, val): self.array.append(val) self.array.sort() return self.array[len(self.array)-self.k] ob = KthLargest(3, [4,5,8,2]) print(ob.add(3)) print(ob.add(5)) print(ob.add(10)) print(ob.add(9)) print(ob.add(4))
इनपुट
ob.add(3) ob.add(5) ob.add(10) ob.add(9) ob.add(4)
आउटपुट
4 5 5 8 8