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

পাইথনে সার্কুলার অ্যারের ডান পাশের পরবর্তী বড় উপাদান খুঁজে বের করার প্রোগ্রাম


মনে করুন nums একটি সংখ্যার তালিকা। প্রতিটি ইনডেক্স i-এর জন্য ডান পাশের (সার্কুলারলি) প্রথম বড় উপাদান খুঁজে বের করতে হবে। না পাওয়া গেলে -1।

উদাহরণস্বরূপ, [4, 5, 1, 3] হলে আউটপুট [5, -1, 3, 4]।

সমাধানের ধাপসমূহ

  • n := a-এর আকার
  • stack := [0], res := [-1]*n
  • ২ বার লুপ (সার্কুলার হ্যান্ডল করার জন্য),
    • i = 0 থেকে n-1 পর্যন্ত,
      • যখন stack নন-এম্পটি এবং a[stack[-1]] < a[i], res[stack[-1]] = a[i], stack.pop()
      • stack.append(i)
  • res ফেরত দিন

উদাহরণ

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. পাইথনে অ্যারের যোগফল বের করা