栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode.496.下一个更大的元素(C++)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode.496.下一个更大的元素(C++)

题目描述:


题解思路:
方法一:暴力解法

class Solution {
public:
    vector nextGreaterElement(vector& nums1, vector& nums2) {
        //暴力解法,遍历两数组
        int length1=nums1.size();
        int length2=nums2.size();
        vector m(length1);
        for(int i=0;i=length2?-1:nums2[k];
        }
        return m;
    }
};

方法二:单调栈+哈希表

class Solution {
public:
    vector nextGreaterElement(vector& nums1, vector& nums2) {
        //单调栈+哈希表:今后遇见类似于下一个更大元素的时候直接运用单调栈
        //先定义单调栈和哈希表
        unordered_map hashmap;//定义的哈希表是将nums1中元素对应nums2中下一个更大元素存储起来
        stack st;
        for(int i=nums2.size()-1;i>=0;i--)//从后向前遍历数组nums2
        {
            int num=nums2[i];
            while(!st.empty()&&num>=st.top())//当栈中不为空并且当前遍历的数组>栈顶元素时,将栈中当前元素出栈
            {
                st.pop();//出栈
            }
            hashmap[num]=st.empty()?-1:st.top();//当栈为空时,说明栈中没有比元素num更大的元素(-1代表没有比num更大的元素;当栈不为空时,说明栈中栈顶元素比当前元素num更大。请结合代码自己推一推)
            st.push(num);//将满足条件的num入栈
        }
        vector m(nums1.size());
        for(int i=0;i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/721661.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号