leetcode 739 今日温度

使用单调栈,寻找第一个比当前元素大的元素。使用单调递减栈,然后当当前元素比栈顶元素大,栈顶pop,并计算位置。这样可以把前面比当前元素小的元素都计算出来,如果当前元素小于栈顶,那说明它的结果(右侧第一个比自己大的元素)还在后面,把它先放到栈中。由于有一些元素找不到比它大的元素所以应该初始化时就置为0,这样如果可以找到结果就修改结果值,如果找不到就直接为0。

如果一个下标在单调栈里,则表示尚未找到下一次温度更高的下标。

class Solution:
    def dailyTemperatures(self, T: List[int]) -> List[int]:
        stack=[]
        result=[0 for _ in range(len(T))]
        for i in range(len(T)):
            while stack and T[stack[-1]]<T[i]:
                s=stack[-1]
                stack=stack[:-1]
                #if not stack:

                result[s]=i-s
            stack.append(i)

        return result
全部评论

相关推荐

点赞 评论 收藏
分享
08-05 18:14
门头沟学院 Java
小花的沉默:是学历厂没错啊,学历太高了不要
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务