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

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;
}

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

!!!注意  !!!

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

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

相关文章:

  • Three.js与Babylon.js对比
  • Java—— 网络爬虫
  • 设计模式——简单工厂模式
  • CST软件基础六:视图
  • 热点│衰老过程中的表观遗传调控
  • QT-VStudio2107加载项目,报出“元素 <LanguageStandard>只有无效值“Default“”
  • Cat.4+WiFi6工业路由器介绍小体积大作用ER4200
  • 【Hadoop】大数据技术之 HDFS
  • vite学习笔记
  • 阿里云API RAG全流程实战:从模型调用到多模态应用的完整技术链路
  • 阿里云ecs如何禁用ip的访问
  • 【CSS学习笔记1】css基础知识介绍
  • 【软考向】Chapter 11 标准化和软件知识产权基础知识
  • 什么是nginx的异步非阻塞
  • 每日c/c++题 备战蓝桥杯(修理牛棚 Barn Repair)
  • voc怎么转yolo,如何分割数据集为验证集,怎样检测CUDA可用性 并使用yolov8训练安全帽数据集且构建基于yolov8深度学习的安全帽检测系统
  • upload-labs通关笔记-第19关文件上传之条件竞争
  • Fastjson利用链JdbcRowSetImpl分析
  • 多维数据助力企业网络安全
  • 2025年最新基于Vue基础项目Todolist任务编辑器【适合新手入手】【有这一片足够了】【附源码】
  • 设计网站需要哪些流程/网络工具
  • up网络推广公司/东莞网站建设优化诊断
  • wordpress程序不能升级/seo短期课程
  • 驻马店做网站/怎样注册网站
  • 中国十大电商公司/怎么关闭seo综合查询
  • 武汉网站建设设计哪家好/chatgpt网址