কম্পিউটার

পাইথনে ডানদিকে বৃত্তাকার বৃহত্তর উপাদান খোঁজার প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে বলা হয় সংখ্যা। আমাদের একই দৈর্ঘ্যের একটি নতুন তালিকা খুঁজে বের করতে হবে যেখানে সূচী i-এর মানটি তার ডানদিকে nums[i] এর চেয়ে বড় পরবর্তী উপাদানের জন্য বরাদ্দ করা হয়েছে, প্রয়োজনে তালিকার সামনের দিকে প্রদক্ষিণ করে। যদি বড় কোন সংখ্যা না থাকে, তাহলে সেটিকে -1 সেট করা উচিত।

সুতরাং, যদি ইনপুটটি [4, 5, 1, 3] এর মত হয়, তাহলে আউটপুট হবে [5, -1, 3, 4]

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

  • n :=a

    এর আকার
  • স্ট্যাক :=একটি স্ট্যাক, প্রথমে 0 ঢোকান, res :=n আকারের একটি তালিকা এবং -1 দিয়ে পূরণ করুন

  • 0 এবং 1 পরিসরের প্রতিটি মানের জন্য, করুন

    • 0 থেকে n-1 রেঞ্জের জন্য, করুন

    • যখন স্ট্যাক খালি না থাকে এবং [স্ট্যাকের উপরে]

      • res[স্ট্যাকের শীর্ষ] :=a[i]

      • স্ট্যাক থেকে শেষ উপাদান মুছুন

    • স্ট্যাকের শেষে i ঢোকান

  • রিটার্ন রিটার্ন

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

উদাহরণ

class Solution:
   def solve(self, a):
      n = len(a)
      stack, res = [0], [-1] * n
      for _ in range(2):
         for i in range(n):
            while stack and a[stack[-1]] < a[i]:
               res[stack[-1]] = a[i]
               stack.pop()
            stack.append(i)
   return res
ob = Solution()
nums = [4, 5, 1, 3]
print(ob.solve(nums))

ইনপুট

[4, 5, 1, 3]

আউটপুট

[5, -1, 3, 4]

  1. পাইথন প্রোগ্রামে অ্যারের সমষ্টি খুঁজুন

  2. পাইথন প্রোগ্রাম একটি অ্যারের বৃহত্তম উপাদান খুঁজে বের করতে

  3. একটি ম্যাট্রিক্সের স্থানান্তর খুঁজে পেতে পাইথন প্রোগ্রাম

  4. অ্যারের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম