代码随想录算法训练营第57天|● 739. 每日温度 ● 496.下一个更大元素 I

单调栈:维持一个单调的栈,用于解决离最近的比自己大or小的元素的距离

739. 每日温度

和之前那个top k 最小堆感觉思路是一样的

python 复制代码
class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        ans=[0]*len(temperatures)
        stack=[0]
        for i in range(1,len(temperatures)):
            if temperatures[i]<=temperatures[stack[-1]]:
                stack.append(i)
            else:
                while stack and temperatures[i]>temperatures[stack[-1]]:
                    ans[stack[-1]]=i-stack[-1]
                    stack.pop()
                stack.append(i)
        return ans

496. 下一个更大元素 I

和上一题思路一样,实现上稍微绕了一下

python 复制代码
class Solution:
    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
        res=[-1]*len(nums1)
        stack=[0]
        for i in range(1,len(nums2)):
            if nums2[i]<=nums2[stack[-1]]:
                stack.append(i)
            else:
                while stack and nums2[i]>nums2[stack[-1]]:
                    if nums2[stack[-1]] in nums1:
                        idx=nums1.index(nums2[stack[-1]])
                        res[idx]=nums2[i]
                    stack.pop()
                stack.append(i)
        return res
相关推荐
Java后端的Ai之路11 小时前
【Python 教程15】-Python和Web
python
冬奇Lab12 小时前
一天一个开源项目(第15篇):MapToPoster - 用代码将城市地图转换为精美的海报设计
python·开源
灰子学技术14 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
那个村的李富贵14 小时前
CANN加速下的AIGC“即时翻译”:AI语音克隆与实时变声实战
人工智能·算法·aigc·cann
二十雨辰14 小时前
[python]-AI大模型
开发语言·人工智能·python
power 雀儿14 小时前
Scaled Dot-Product Attention 分数计算 C++
算法
Yvonne爱编码14 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚14 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂15 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
pas13615 小时前
41-parse的实现原理&有限状态机
开发语言·前端·javascript