739. 每日温度



代码一:暴力超时了。

class Solution(object):
    # 暴力超时
    def dailyTemperatures(self, T):
        """
        :type T: List[int]
        :rtype: List[int]
        """
        if not T:
            return []
        res = []
        for i in range(len(T)):
            temp = T[i:]
            if not temp:
                break
            for j in range(1, len(temp)):
                if temp[j] > T[i]:
                    res.append(j)
                    break
                if j == len(temp) - 1:
                    res.append(0)
                    break
        res.append(0)
        return res

代码二:单调栈

思路:

注意题目说的是更高的气温,而不是最高的气温。因此,只要找到原list中在当前元素后面且比当前元素大的位置的下标,赋值即可。

class Solution(object):
    # 单调栈。
    # 遍历T,维护一个栈,栈空或者当前元素比栈顶小,则入栈,否则栈顶出栈,并在res中记录栈顶元素位置的答案。
    # 注意栈中存放的应该是每个元素的下标。
    def dailyTemperatures(self, T):
        """
        :type T: List[int]
        :rtype: List[int]
        """
        if not T:
            return []
        lenT = len(T)
        # 返回值
        res = [0] * lenT
        stack = []
        for index, curT in enumerate(T):
            while stack and curT > T[stack[-1]]:
                temp = stack.pop()
                res[temp] = index - temp
            stack.append(index)
        return res

posted @ 2020-09-30 15:33  人间烟火地三鲜  阅读(122)  评论(0编辑  收藏  举报