当前位置: 首页 > news >正文

2024-06-24力扣每日一题

链接:

503. 下一个更大元素 II

题意

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

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

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

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

实际代码:

#include<bits/stdc++.h>
using namespace std;
vector<int> nextGreaterElements(vector<int>& nums)
{int maxIndex=-1;int lg=nums.size();stack<int>tMax;vector<int>ans(lg,0);for(int i=0;i<lg;i++){if(maxIndex==-1 || nums[i]>nums[maxIndex]){maxIndex=i;}}ans[maxIndex]=-1;tMax.push(nums[maxIndex]);for(int i=1;i<lg;i++){int mao=(maxIndex-i+lg)%lg;while(tMax.size() && tMax.top()<=nums[mao]){tMax.pop();}if(tMax.size()){ans[mao]=tMax.top();}else ans[mao]=-1;tMax.push(nums[mao]);}return ans;
}
int main()
{vector<int> nums;int temp;while(cin>>temp){nums.push_back(temp);}vector<int>ans=nextGreaterElements(nums);int lg=ans.size();//cout<<"lg:"<<lg<<endl;for(int i=0;i<lg;i++){cout<<"i:"<<ans[i]<<endl;}return 0;
}

限制:

  • 1 <= nums.length <= 104
  • -109 <= nums[i] <= 109
http://www.lryc.cn/news/382399.html

相关文章:

  • pyhon模块以及常用的第三方模块
  • shell脚本—快速修改centos网络配置
  • 线程池概念、线程池的不同创建方式、线程池的拒绝策略
  • 示例:WPF中如何绑定ContextMenu和Menu
  • 区块链小故事
  • Java | Leetcode Java题解之第167题两数之和II-输入有序数组
  • 项目训练营第三天
  • 计算机组成原理 | CPU子系统(1)基本概述
  • 无引擎游戏开发(2):最简游戏框架 | EasyX制作井字棋小游戏I
  • 排书 IDA*
  • playwright录制脚本原理
  • awk脚本监控
  • Python高压电容导电体和水文椭圆微分
  • 微信小程序 引入MiniProgram Design失败
  • Java 8 Date and Time API
  • pyppeteer模块经常使用的功能,相关操作案例
  • nginx+keepalived+tomcat集群实验
  • vue脚手架 axios的二次封装
  • 人机恋爱新趋势:与AI男友谈恋爱的甜蜜与挑战
  • 文生视频开源产品的一些调研(一)
  • 一切前端概念,都是纸老虎
  • 使用自签名 TLS 将 Dremio 连接到 MinIO
  • 嵌入式系统软件开发环境_2.一般架构
  • 单门户上集成多种数据库查询入口
  • 华芯微特SWM34-使用定时器捕获快速解码EV1527编码
  • 小程序安卓手机点击uni-data-select 下拉框选择器会出现蓝色阴影
  • playwright vscode 插件源码解析
  • Mysql: SQL-DDL
  • Java中的加密与解密:实现安全的数据传输
  • 基于SSM的美食推荐系统