739. Daily Temperatures

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

Random Note


when you have something circular, most of the time you can have one variableand another can be calculated using size, current value and doing %