• 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
  • 相关阅读:
    红帽rhce认证考试科目有哪些?
    前端实现ofd打印预览以及下载
    你不能错过的【Python爬虫】测试3(爬取所有内容 + 完整源代码 + 架构 + 结果)
    flink运行时组件和调度原理
    java 启动Selenium 以及端口占用的问题
    Flink(二)【Flink 部署模式】
    C++入门:C语言到C++的过渡
    计算机二级WPS 选择题(模拟和解析三)
    1830. 【提高组NOIP2007】统计数字(count.pas/c/cpp)
    主流开发语言和开发环境?
  • 原文地址:https://blog.csdn.net/Fei_WuYan/article/details/139940676