मान लीजिए कि हमारे पास एक सरणी संख्या है और दूसरा मान k है, तो हमें k आकार की संख्याओं का सबसे अधिक प्रतिस्पर्धी परिणाम खोजना होगा। यहां परवर्ती s1 बाद के s2 (समान आकार के) की तुलना में अधिक प्रतिस्पर्धी है यदि पहली स्थिति में जहां s1 और s2 भिन्न हैं, अनुवर्ती s1 की संख्या s2 में संबंधित संख्या से कम है।
इसलिए, यदि इनपुट nums =[4,6,3,7] k =2 जैसा है, तो आउटपुट [3,7] होगा क्योंकि आकार 2, {[4,6], [4] के बाद के सभी अनुक्रमों में से, 3], [4,7], [6,3], [6,7], [3,7]}, [3,7] सबसे अधिक प्रतिस्पर्धी है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- प्रयास :=अंकों का आकार - k
- स्टैक:=एक नई सूची
- अंकों में प्रत्येक अंक के लिए, करें
- जबकि स्टैक खाली नहीं है और संख्या <स्टैक के शीर्ष और प्रयास> 0, करते हैं
- स्टैक से पॉप तत्व
- प्रयास :=प्रयास - 1
- संख्या को स्टैक में पुश करें
- जबकि स्टैक खाली नहीं है और संख्या <स्टैक के शीर्ष और प्रयास> 0, करते हैं
- ढेर के शीर्ष k तत्व लौटाएं
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(nums, k): attempts = len(nums) - k stack = [] for num in nums: while stack and num < stack[-1] and attempts > 0: stack.pop() attempts -= 1 stack.append(num) return stack[:k] nums = [4,6,3,7] k = 2 print(solve(nums, k))
इनपुट
[4,6,3,7], 2
आउटपुट
[3,7]