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

Python-এ Daily Temperatures সমস্যা

এই সমস্যায় প্রতিদিনের তাপমাত্রার একটি লিস্ট দেওয়া থাকলে, প্রতিটি দিনের জন্য কতদিন পর তাপমাত্রা বেশি হবে তা বের করতে হবে। যদি ভবিষ্যতে আরও গরম দিন না থাকে, তবে ০ রাখতে হবে।

উদাহরণস্বরূপ, T = [73, 74, 75, 71, 69, 72, 76, 73] এর জন্য আউটপুট হবে [1, 1, 4, 2, 1, 1, 0, 0]।

সমাধানের পদ্ধতি (Monotonic Stack)

  • ans অ্যারে ০ দিয়ে ইনিশিয়ালাইজ করুন।
  • একটি স্ট্যাক রাখুন যাতে ইন্ডেক্সগুলো রাখা হবে (মনোটোনিক ডিক্রিজিং)।
  • প্রতিটি দিন i এর জন্য, যতক্ষণ স্ট্যাক খালি নয় এবং T[i] > T[stack.top()]:
    • টপ ইন্ডেক্স পপ করুন এবং ans[top] = i - top সেট করুন।
  • কারেন্ট ইন্ডেক্স i স্টാക്കে পুশ করুন।

উদাহরণ (Python)

class Solution(object):
    def dailyTemperatures(self, T):
        ans = [0] * len(T)
        stack = []
        for i in range(len(T)):
            while stack and T[i] > T[stack[-1]]:
                idx = stack.pop()
                ans[idx] = i - idx
            stack.append(i)
        return ans

ob1 = Solution()
print(ob1.dailyTemperatures([73, 74, 75, 71, 69, 72, 76, 73]))

ইনপুট

[73, 74, 75, 71, 69, 72, 76, 73]

আউটপুট

[1, 1, 4, 2, 1, 1, 0, 0]
  1. পাইথনে হিস্টোগ্রামে সবচেয়ে বড় আয়ত

  2. পাইথনে রেইন ওয়াটার ট্র্যাপিং

  3. পাইথনে বাইনারি ট্রি ইনঅর্ডার ট্রাভার্সাল

  4. পাইথনে লিস্ট ব্যবহার করে Stack এবং Queue বাস্তবায়ন