• 2024-06-24力扣每日一题


    链接:

    503. 下一个更大元素 II

    题意

    循环数组,找出每个元素的往后最近且大于它的元素

    今天没试暴力啊,大概率是过不了的

    思路就是先找到最大的数,最大数的结果肯定是-1,然后倒着遍历数组,用一个栈来从大到小的存放数字,就可以很方便的得到离自身最近的比自己大的数字,同时由于是倒着遍历,所以栈内数字一定在当前遍历的数字之后

    核心思路是,从后往前遍历时,后遍历到的数字(位置靠前)的数字是可以完全替换掉先遍历到的数字(位置靠后)

    实际代码:

    #include
    using namespace std;
    vector nextGreaterElements(vector& nums)
    {
        int maxIndex=-1;
        int lg=nums.size();
        stacktMax;
        vectorans(lg,0);
        
        for(int i=0;inums[maxIndex])
            {
                maxIndex=i;
            }
        }
        ans[maxIndex]=-1;tMax.push(nums[maxIndex]);
        
        for(int i=1;i nums;
        int temp;
        
        while(cin>>temp)
        {
            nums.push_back(temp);
        }
        
        vectorans=nextGreaterElements(nums);
        int lg=ans.size();
        //cout<<"lg:"<

    限制:

    • 1 <= nums.length <= 104
    • -109 <= nums[i] <= 109
  • 相关阅读:
    xshell报错-要继续使用此程序,您必须应用最新的更新或使用新版本
    uniapp 分包
    【机器学习】随机森林及调参 学习笔记
    MIT的智慧,利用深度学习来解决了交通堵塞
    专利-分析方法总结
    本机配置SSH连接代码仓库
    vue重修之路由【下】
    使用pandas处理excel文件【Demo】
    Hbase和Clickhouse对比简单总结
    巨细胞病毒CMV感染检测,试剂盒怎么选?
  • 原文地址:https://blog.csdn.net/Fei_WuYan/article/details/139940676