• 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
  • 相关阅读:
    NFT 交易市场的格局之变:从一家独大到百家争鸣
    【漏洞复现-twonkyserver-目录遍历】vulfocus/twonkyserver-cve_2018_7171
    iOS代码混淆教程
    mysql优化-记一次sql优化的过程
    【车载Android】模拟Android系统的高负载环境
    web前端-javascript-for循环练习(1-100所有奇数和,1-100所有7的倍数个数及总和,打印水仙花数,判断是否是质数)
    算法学习笔记2023.1
    银行卡号识别
    shell编程中的流程控制
    基于强化学习的节能路由(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/Fei_WuYan/article/details/139940676