ধরুন আমাদের একটি অ্যারের সংখ্যা এবং আরেকটি মান 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
- স্ট্যাক :=একটি নতুন তালিকা
- প্রতিটি সংখ্যার জন্য, করুন
- যখন স্ট্যাক খালি না থাকে এবং num
0, do - স্ট্যাক থেকে পপ উপাদান
- প্রয়াস :=প্রচেষ্টা - 1
- স্ট্যাকের মধ্যে নম্বর পুশ করুন
- যখন স্ট্যাক খালি না থাকে এবং num
- স্ট্যাকের শীর্ষ 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]