কম্পিউটার টিউটোরিয়াল

পাইথনে লেক্সিকোগ্রাফিক্যালি সবচেয়ে ছোট সাবসিকোয়েন্স (আকার k) খুঁজে বের করার প্রোগ্রাম

একটি লিস্ট 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]
  1. পাইথনে একবার সোয়্যাপ দিয়ে লেক্সিকোগ্রাফিক্যালি সবচেয়ে ছোট স্ট্রিং খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে লিনিয়ার টাইমে আকার ৩-এর সর্টেড সাবসিকোয়েন্স খুঁজুন

  3. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে ছোট সংখ্যা বের করা

  4. পাইথন প্রোগ্রাম: ২ডি অ্যারে-তে k-তম ছোট এলিমেন্ট বের করা