मान लीजिए हमारे पास दैनिक तापमान T की एक सूची है, हमें एक सूची लौटानी है जैसे कि, इनपुट में प्रत्येक दिन के लिए, दिखाता है कि हमें गर्म तापमान तक कितने दिन इंतजार करना होगा। यदि ऐसा कोई भविष्य का दिन नहीं है तो इसके बजाय 0 संग्रहीत करें। उदाहरण के लिए, यदि T = [73, 74, 75, 71, 69, 72, 76, 73], तो आउटपुट [1, 1, 4, 2, 1, 1, 0, 0] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- ans := T के समान आकार की एक सरणी, और इसे 0 से भरें
- एक स्टैक परिभाषित करें, और स्टैक में 0 सम्मिलित करें, और i := 1
- जब तक i < T की लंबाई
- जब तक स्टैक तत्वों की संख्या 0 नहीं है और T[i] > T[स्टैक शीर्ष तत्व]
- index := स्टैक शीर्ष तत्व
- ans[index] := i - index
- स्टैक से शीर्ष तत्व हटाएं
- यदि स्टैक की लंबाई 0 है या T[i] <= T[स्टैक शीर्ष तत्व]
- स्टैक में i सम्मिलित करें
- i को 1 से बढ़ाएं
- जब तक स्टैक तत्वों की संख्या 0 नहीं है और T[i] > T[स्टैक शीर्ष तत्व]
- ans लौटाएं
उदाहरण (Python)
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution(object): def dailyTemperatures(self, T): ans = [0 for i in range(len(T))] stack = [] stack.append(0) i=1 while i <len(T): while len(stack) and T[i]>T[stack[-1]]: index = stack[-1] ans[index] = i-index stack.pop() if not len(stack) or T[i]<=T[stack[-1]]: stack.append(i) i+=1 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]