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.pswp.cn/diannao/84195.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84195.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84195.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql連接池druid監控配置

文章目錄 前置依賴啟用配置訪問監控一些問題 前置 連接池有很多類型&#xff0c;比如 c3p0&#xff0c;比如 hikariCP&#xff0c;比如 druid。c3p0 一些歷史項目可能用的比較多&#xff0c;hikariCP 需要高性能的項目比較多&#xff0c;druid 性能也很好&#xff0c;而且還提…

Jetson系統燒錄與環境配置全流程詳解(含驅動、GCC、.Net設置)

Jetson系統燒錄與環境配置全流程詳解&#xff08;含驅動、GCC、.Net設置&#xff09; 目錄1. 準備工作與工具安裝1.1 主機系統要求1.2 安裝 SDK Manager 2. JetPack 系統燒錄流程2.1 Jetson 進入恢復模式2.2 使用 SDK Manager 燒錄 JetPack 3. Jetson 系統基礎設置4. 配置 .Net…

分布式緩存:緩存的三種讀寫模式及分類

文章目錄 緩存全景圖Pre緩存讀寫模式概述1. Cache Aside&#xff08;旁路緩存&#xff09;工作流程優缺點 2. Read/Write Through&#xff08;讀寫穿透&#xff09;工作流程優缺點典型場景 3. Write Behind Caching&#xff08;異步寫回&#xff09;工作流程優缺點典型場景 緩存…

Ntfs!FindFirstIndexEntry函數中ReadIndexBuffer函數的作用是新建一個Ntfs!_INDEX_LOOKUP_STACK結構

第一部分&#xff1a; 0: kd> kc # 00 Ntfs!FindFirstIndexEntry 01 Ntfs!NtfsRestartIndexEnumeration 02 Ntfs!NtfsQueryDirectory 03 Ntfs!NtfsCommonDirectoryControl 04 Ntfs!NtfsFsdDirectoryControl 05 nt!IofCallDriver 06 nt!IopSynchronousServiceTail 07 nt!Nt…

5.24 note

笛卡爾積(?選擇條件 select a.student_name as member_A, b.student_name as member_B, c.student_name as member_C from schoola as a join schoolb as b join schoolc as c where a.student_name ! b.student_name and a.student_name !…

為什么需要在循環里fetch?

假設有多個設備連接在后端,數量不定,需要按個讀回狀態,那么就要在循環里fetch了. 此函數非常好用,來自于國內一個作者,時間久了,忘記了來源,抱歉. export default async function fetchWithTimeout(resource, options {}) {const { timeout 1000 } options;const controll…

不同凈化技術(靜電 / UV / 濕式)的性能對比研究

在餐飲油煙和工業廢氣治理領域&#xff0c;油煙凈化技術的選擇至關重要。目前&#xff0c;靜電、UV 光解、濕式洗滌是市場上應用較為廣泛的三種凈化技術。它們憑借不同的工作原理和技術特性&#xff0c;在凈化效率、能耗、適用場景等方面展現出各自的優勢與局限。本文將從多個維…

Ubuntu 22.04上升級npm版本

如果使用NVM安裝Node.js npm會自動包含&#xff0c;但版本可能不是最新的。你可以選擇升級&#xff1a; # 檢查當前版本 npm --version# 升級到最新版本 npm install -g npmlatest# 或者升級到特定版本 npm install -g npm9.8.1如果使用其他方法安裝Node.js 通常Node.js安裝…

項目管理進階:111頁 詳解華為業務變革框架及戰略級項目管理【附全文閱讀】

BTMS 是一套集成管理系統框架&#xff0c;涵蓋變革規劃、項目執行、實施及生命周期管理等多個關鍵環節。在規劃階段&#xff0c;通過全面收集需求、深入分析現狀&#xff0c;制定出符合業務戰略的年度規劃&#xff0c;明確變革舉措和項目清單。 解決方案開發的 PMOP 流程&#…

java基礎知識回顧1(可用于Java基礎速通)考前,面試前均可用!

目錄 一、初識java 二、基礎語法 1.字面量 2.變量 3.關鍵字 4.標識符 聲明&#xff1a;本文章根據黑馬程序員b站教學視頻做的筆記&#xff0c;可對應課程聽&#xff0c;課程鏈接如下: 02、Java入門&#xff1a;初識Java_嗶哩嗶哩_bilibili 一、初識java Java是美國 sun 公…

Linux下MySQL的安裝與使用

1 安裝前說明 1.1 Linux系統及工具的準備 安裝并啟動好兩臺虛擬機&#xff1a;CentOS 7 掌握克隆虛擬機的操作 mac地址主機名ip地址UUID 安裝有 Xshell 和 Xftp 等訪問 CentOS 系統的工具 CentOS6 和 CentOS7 在 MySQL 的使用中的區別 防火墻&#xff1a;6是iptables&am…

在react項目中使用andt日期組件,選擇周和季度,直接獲取所對應的日期區間

在react項目中使用andt日期組件&#xff0c;選擇周和季度&#xff0c;直接獲取所對應的日期區間 import { DatePicker, Space } from antd; import React from react; const onChange (date, dateString) > {console.log(date,dateString) }; const onChangeweek (date, …

數字信號處理大實驗2 利用FFT估計信號的頻率

目錄 3.1 實驗目的 3.2 實驗內容與要求 3.3 實驗原理 3.3.1 基于時域求導-頻域乘法的n階導數積分法 3.3.2 基于頻域卷積的雙/多譜線插值法 3.3.3 基于譜峰和滑動平均的多譜線綜合插值方法 3.3.4 基于相鄰顯著譜線的滑動平均綜合插值方法 3.3.5 基于&#xff08;2&#…

【Java】Java元注解

Target(ElementType.METHOD) Retention(value RetentionPolicy.RUNTIME) public interface OperatorLog {String source() default "WEB"; //日志操作來源 默認是web&#xff0c;還有socket的String model() default ""; //操作模塊 }這個代碼中的 Target…

阿里云百煉(1) : 阿里云百煉應用問答_回答圖片問題_方案1_提問時上傳圖片文件

直接用于拍照答題不大理想, 可能適用其他用途, 更好的方案: 阿里云百煉(1) : 阿里云百煉應用問答_回答圖片問題_方案2_提取題目再提問-CSDN博客 1.實現代碼 package cn.nordrassil.ly.test.拍照答題;import com.alibaba.dashscope.app.Application; import com.alibaba.dashsc…

深入探索 CSS 中的偽類:從基礎到實戰?

在前端開發的世界里&#xff0c;CSS 作為網頁樣式的 “化妝師”&#xff0c;有著至關重要的作用。而 CSS 偽類則像是這位 “化妝師” 手中的神奇畫筆&#xff0c;能夠基于元素的狀態或位置為其添加獨特的樣式&#xff0c;極大地豐富了網頁的交互性和視覺效果。接下來&#xff0…

c++ constexpr關鍵字

constexpr字面意思為常量表格式&#xff0c; 用于指示編譯器在編譯時計算表達式的值。 1、作為常量表格式&#xff0c;必須在編譯時就能確定其值。如&#xff1a;constexpr int size 9527; 2、可以修飾函數&#xff0c;要求能在編譯時求值&#xff0c;所以傳的參數也必須是編…

服務器硬盤分類

以下是服務器硬盤的綜合性分類與技術特性分析&#xff0c;依據當前行業標準及技術演進整理&#xff1a; 一、按存儲介質分類 1. ?機械硬盤&#xff08;HDD&#xff09;? ? 核心特性?&#xff1a;采用旋轉磁盤與機械磁頭結構&#xff0c;通過磁道尋址實現數據讀寫 …

圖解深度學習 - 機器學習簡史

前言 深度學習并非總是解決問題的最佳方案&#xff1a;缺乏足夠數據時&#xff0c;深度學習難以施展&#xff1b;某些情況下&#xff0c;其他機器學習算法可能更為高效。 若初學者首次接觸的是深度學習&#xff0c;可能會形成一種偏見&#xff0c;視所有機器學習問題為深度學…

ConceptAttention:Diffusion Transformers learn highly interpretable features

ConceptAttention: Diffusion Transformers Learn Highly Interpretable Featureshttps://arxiv.org/html/2502.04320?_immersive_translate_auto_translate=1用flux的attention來做圖文的顯著性分析。 1.i