day48 | 单调栈问题

739. 每日温度

求的是下一个更高温度的天数还有几天出现。 首先我们维持一个单调递减的stack,因为显然这个栈里面不会出现更高温度的天。 如果出现了一个更高温度的天,我们可以利用二分法重新构造这个队列。 当然因为我们要求每天的天数,所以从后往前遍历这个 list,依次 pop,求出对应的天数。 因为要求索引的差值,所以我们不能存入值,而是应当存入索引。 为了方便我这里用一个元祖直接表示了。

stack = [(0,temperatures[0])]
if temperatures[i]<stack[-1][1]:
	stack.append((i,temperatures[i]))
else:
	while stack and temperatures[i]>stack[-1][1]:
	  xxx
  

496.下一个更大元素 I

这题就是求 nums 的最大数目,然后用一个 map 来记录一下

503.下一个更大元素II

循环一下。当遍历完当前的 nums 数组之后继续遍历,第二次遍历的范围应该是 range(stack[0][0]+1)

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务