解法利用while循环判断是否应该让stack_top出栈、同时stack里面的相邻关系就是temperatures每日温度里面的相邻关系from typing import List class Solution: def largestRectangleArea(self, heights: List[int]) - int: # 在数组前后各加一个高度为 0 的柱子方便处理边界 heights [0] heights [0] stack [] # 存储索引栈内索引对应的高度是单调递增的 max_area 0 for i in range(len(heights)): # 当前高度小于栈顶高度时可以计算以栈顶高度为高的矩形面积 while stack and heights[i] heights[stack[-1]]: height heights[stack.pop()] # 当前栈顶是左边界i 是右边界 width i - stack[-1] - 1 max_area max(max_area, height * width) stack.append(i) # 当前i比stack_top高的时候才入栈反过来说每次入栈的都是temperatures更高的 return max_area