题目
https://leetcode-cn.com/problems/daily-temperatures/
代码
- 单调栈解决这个问题
代码
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
# 使用单调栈解决本题
res = []
stack = [] # 模拟栈
stack.append(len(temperatures)-1) # 放入最后一个元素
res.append(0)
for i in reversed(range(len(temperatures)-1)):
cur = temperatures[i]
# 可以把下面的这层循环更加精简掉
if cur >= temperatures[stack[-1]] :
# 循环出栈,直到直到更大的,或者栈为空
while(len(stack) and cur >= temperatures[stack[-1]]):
stack.pop() # 最后一位删除
if len(stack) == 0: # 全删完了
stack.append(i)
res.append(0)
else:
res.append(stack[-1]-i)
stack.append(i)
else:
res.append(stack[-1]-i)
stack.append(i)
res.reverse()
return res
# temperatures = [73,74,75,71,69,72,76,73]
# # temperatures = [77,76,75,74,72,72,71]
# s = Solution()
# res = s.dailyTemperatures(temperatures)
# print(res)