একটি লিস্ট nums এবং একটি মান k দেওয়া আছে। লিস্ট থেকে আকার k-এর একটি সাবসিকোয়েন্স বেছে নিতে হবে যেটি লেক্সিকোগ্রাফিক্যালি (ডিকশনারি অর্ডারে) সবচেয়ে ছোট।
উদাহরণস্বরূপ, nums = [2, 3, 1, 10, 3, 4], k = 3 হলে আউটপুট [1, 3, 4]।
সমাধানের পদ্ধতি (গ্রিডি + মনোটোনিক স্ট্যাক-সদৃশ লজিক)
আলগোরিদমটি 뒤에서 থেকে সামনে সিকোয়েন্স বানায়। l = len(nums), r = k-1। প্রতিটি পজিশন j (০ থেকে k-1) এর জন্য উপযুক্ত সবচেয়ে ছোট এলিমেন্ট বেছে নেয় বাকি রেমেইনিং এলিমেন্ট থেকে।
পাইথন কোড উদাহরণ
class Solution:
def solve(self, nums, k):
l, r = len(nums), k - 1
out = []
for j in range(k):
mn = nums[~r]
for i in range(r, l):
if mn >= nums[~i]:
mn = nums[~i]
l = i
r -= 1
out.append(mn)
return out
ob = Solution()
nums = [2, 3, 1, 10, 3, 4]
k = 3
print(ob.solve(nums, k))
ইনপুট
[2, 3, 1, 10, 3, 4], 3
আউটপুট
[1, 3, 4]