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

C++滑动门问题(附两种方法)

题目如下:

滑动窗口 - 题目 - Liuser's OJ

——引用自OJ网站

方法如下:

1.常规思想

#include<bits/stdc++.h>
using namespace std;
int main()
{int n,k;int a[110];cin>>n>>k;for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<n-k;i++){int ma=-1;for(int j=i;j<i+k;j++){ma=max(ma,a[j]);}cout<<ma<<endl;}return 0;
}

做起来很简单,缺点也很明显

时间复杂度太高

遇到极端数据就会出错

2.栈思想

#include<bits/stdc++.h>
#include<stack>
using namespace std;
int a[110];
int ma[110];
int n,k;
int l=0;
int main()
{stack<int> s;stack<int> ss;cin>>n>>k;for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<k;i++){if(s.empty()==true||s.top()<=a[i]){s.push(a[i]);}else if(s.top()>a[i]){int t=0;while(!(s.empty()==true||s.top()<=a[i])){ss.push(s.top());s.pop();t++;}s.push(a[i]);for(int j=0;j<t;j++){s.push(ss.top());ss.pop();}}}ma[++l]=s.top();while(s.empty()!=true){ss.push(s.top());s.pop();}cout<<ss.top()<<" ";while(ss.empty()!=true){s.push(ss.top());ss.pop();}for(int i=k;i<n;i++){while(true){if(a[i-k]==s.top()){s.pop();break;}ss.push(s.top());s.pop();}if(s.empty()==true){s.push(ss.top());ss.pop();}if(a[i]<s.top()){while(true){if(s.empty()==true){s.push(a[i]);break;}if(a[i]<s.top()){ss.push(s.top());s.pop();}else{s.push(a[i]);break;}}}else if(a[i]>=s.top()){if(ss.empty()==true){s.push(a[i]);}else{while(true){if(ss.empty()==true){s.push(a[i]);break;}if(ss.top()<=a[i]){s.push(ss.top());ss.pop();}else{s.push(a[i]);break;}}}}while(ss.empty()!=true){s.push(ss.top());ss.pop();}ma[++l]=s.top();while(s.empty()!=true){ss.push(s.top());s.pop();}cout<<ss.top()<<" ";while(ss.empty()!=true){s.push(ss.top());ss.pop();}}cout<<endl;for(int i=1;i<=l;i++){cout<<ma[i]<<" ";}return 0;
}

虽然写起来有亿点点麻烦,但是胜在稳定

!!!注意  !!!

作者写代码的时候没有注意数据范围,在网站里测试的时候会出错

自己在网站里测试的时候记得根据实际情况调整数据范围!!!!

http://www.lryc.cn/news/2384898.html

相关文章:

  • 基于ITcpServer/IHttpServer框架的HTTP服务器
  • 初识main函数
  • FPGA高效验证工具Solidify 8.0:全面重构图形用户界面
  • SIL2/PLd 认证 Inxpect毫米波安全雷达:3D 扫描 + 微小运动检测守护工业安全
  • java中string类型的list集合放到redis的5种数据类型的那种比较合适呢,可以用StringRedisTemplate实现
  • PyQt学习系列09-应用程序打包与部署
  • 实现图片自动压缩算法,canvas压缩图片方法
  • 《数据结构笔记三》:单链表(创建、插入、遍历、删除、释放内存等核心操作)
  • 光伏行业如何利用SD-WAN优化分布式网络:替代MPLS、VPN、4G/5G的网络架构升级与云安全方案全解析
  • 2025电工杯数学建模A题思路数模AI提示词工程
  • LLM | 论文精读 | NAACL 2025 | Clarify When Necessary:教语言模型何时该“问一句”再答!
  • 嵌入式鸿蒙openharmony应用开发环境搭建与工程创建实现
  • MDK的编译过程及文件类型全解
  • socc 19 echash论文部分解读
  • Linux Shell编程(八)
  • AI筑基,新质跃升|英码科技亮相华为广东新质生产力创新峰会,发布大模型一体机新品,助力产业智能化转型
  • 手机打电话时由对方DTMF响应切换多级IVR语音菜单(话术脚本与实战)
  • 面试题——JDBC|Maven|Spring的IOC思想|DI思想|SpringMVC
  • DETR3D- 3D Object Detection from Multi-view Images via 3D-to-2D Queries
  • SpringBoot3整合WebSocket
  • 鸿蒙进阶——驱动框架UHDF 机制核心源码解读(一)
  • 电子电路:能认为电抗也是在做功吗?
  • DEEPSEEK + 其他工具的玩法
  • Idea 配合 devtools 依赖 实现热部署
  • 远程访问家里的路由器:异地访问内网设备或指定端口网址
  • 根据参数量,如何推断需要多少数据才能够使模型得到充分训练?
  • PycharmFlask 学习心得:路由(3-4)
  • 从逻辑学视角严谨证明数据加密的数学方法与实践
  • 敦煌网测评从环境搭建到风控应对,精细化运营打造安全测评体系
  • 现代化SQLite的构建之旅——解析开源项目Limbo