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 <= 10530 <= temperatures[i] <= 100
SOLUTION:
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
result: List[int] = [0]*len(temperatures)
#so rest of the values will be zero
stack: List[int] = []
for i, t in enumerate(temperatures):
while stack and t > stack[-1][0]:
stackTemp, stackIndex = stack.pop()# memory
result[stackIndex] = i-stackIndex
stack.append([t, i])
return result
Time Complexity: O(n)
Space Complexity: O(n)
The code works as follows:
- The function creates a list called
resultto store the results. The list is initialized to all zeros. - The function creates a stack to store the temperatures that have been processed so far.
- The function iterates over the
temperaturesarray. - For each temperature, the function checks the stack.
- If the stack is not empty and the current temperature is greater than the top element of the stack, then the function pops the top element of the stack and stores the difference between the current index and the index of the popped element in the
resultlist. - The function then pushes the current temperature and index onto the stack.
- The function returns the
resultlist.

Comments
Post a Comment