这是一个典型的单调栈的题目。首先思考“无脑入栈”的情况,取反后将答案与栈状态的更新编辑一下即可。这个算法的时间复杂度是O(N),空间复杂度是O(N)。
python:
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
size = len(temperatures)
ans = [0]*size
stack = []
for i in range(size):
while stack and temperatures[stack[-1]] < temperatures[i]:
ans[stack[-1]] = i - stack[-1]
stack.pop()
stack.append(i)
return ans
PREVIOUSlc735.行星碰撞
NEXTlc069.x的平方根