কম্পিউটার

পাইথনে লাভের জন্য অপেক্ষা করতে ন্যূনতম সংখ্যক দিন খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে কালানুক্রমিক ক্রমানুসারে একটি কোম্পানির দৈনিক স্টক মার্কেটের দামের প্রতিনিধিত্বকারী দামের একটি তালিকা আছে। আমাদের একটি একই দৈর্ঘ্যের তালিকা খুঁজে বের করতে হবে যেখানে সূচক i এর মান হবে ন্যূনতম কত দিন অপেক্ষা করতে হবে যতক্ষণ না আমরা লাভ করি। যদি লাভ করার কোন উপায় না থাকে তাহলে মান 0 হওয়া উচিত।

সুতরাং, ইনপুট যদি দামের মত হয় =[4, 3, 5, 9, 7, 6], তাহলে আউটপুট হবে [2, 1, 1, 0, 0, 0]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:

  • উত্তর :=মূল্যের মতো আকারের একটি তালিকা এবং 0 দিয়ে পূরণ করুন
  • q :=একটি নতুন তালিকা
  • প্রতিটি সূচক i এবং মূল্য p মূল্যের জন্য, করুন
    • যখন q খালি নয় এবং p> q এর শেষ আইটেমের দ্বিতীয় মান, do
      • j :=q এর শেষ উপাদানের প্রথম আইটেম
      • উত্তর [j] :=i - j
      • q থেকে শেষ উপাদান মুছুন
    • q এর শেষে (i, p) সন্নিবেশ করুন
  • উত্তর ফেরত দিন

আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:

উদাহরণ

class Solution:
   def solve(self, prices):
      ans = [0 for _ in prices]
      q = []
      for i, p in enumerate(prices):
         while q and p > q[-1][1]:
            j = q[-1][0]
            ans[j] = i - j
            q.pop()
         q.append((i, p))
      return ans

ob = Solution()
prices = [4, 3, 5, 9, 7, 6]
print(ob.solve(prices))

ইনপুট

[4, 3, 5, 9, 7, 6]

আউটপুট

[2, 1, 1, 0, 0, 0]

  1. পাইথনে মার্জ করার পরে ন্যূনতম সংখ্যার রঙগুলি খুঁজে বের করার প্রোগ্রামটি থাকে

  2. পাইথনে পরিবর্তন করার জন্য প্রয়োজনীয় কয়েনের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে এক নম্বর থেকে অন্য নম্বর তৈরি করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে একটি স্ট্রিং সাবস্ট্রিং অন্যটির জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করার প্রোগ্রাম