Medium
Given an array of integers temperatures
represents the daily temperatures, return an array answer
such that answer[i]
is the number of days you have to wait after the ith
day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0
instead.
Example 1:
Input: temperatures = [73,74,75,71,69,72,76,73] Output: [1,1,4,2,1,1,0,0]
Example 2:
Input: temperatures = [30,40,50,60] Output: [1,1,1,0]
Example 3:
Input: temperatures = [30,60,90] Output: [1,1,0]
Constraints:
1 <= temperatures.length <= 105
30 <= temperatures[i] <= 100
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
# self.stack = []
# n = len(temperatures)
# self.ans = [0]*n
# for index, temp in enumerate(temperatures):
# while self.stack and temperatures[self.stack[-1]] < temp:
# pop_index = self.stack.pop()
# self.ans[pop_index] = index-pop_index
# self.stack.append(index)
# return self.ans
n = len(temperatures)
ans = [0] * n
hottest = 0
for index in range(n-1, -1, -1):
current_temp = temperatures[index]
if current_temp >= hottest:
hottest = temperatures[index]
continue
day = 1
while temperatures[day+index] <= current_temp:
day += ans[day+index]
ans[index] = day
return ans