【算法基礎20-單調棧】

算法原理:
用單調遞增棧,當該元素可以入棧的時候,棧頂元素就是它左側第一個比它小的元素。
以:3 4 2 7 5 為例,過程如下:
動態模擬過程
在這里插入圖片描述

題目:
給定一個長度為 N 的整數數列,輸出每個數左邊第一個比它小的數,如果不存在則輸出 ?1。
輸入格式

第一行包含整數 N,表示數列長度。

第二行包含 N個整數,表示整數數列。
輸出格式

共一行,包含 N
個整數,其中第 i 個數表示第 i 個數的左邊第一個比它小的數,如果不存在則輸出 ?1。
數據范圍

1≤N≤105

1≤數列中元素≤109

輸入樣例:

5
3 4 2 7 5

輸出樣例:
1
-1 3 -1 2 2

#include<iostream>
using namespace std;
const int maxn = 100010;
int stk[maxn],tt;int main(){int N,k;cin>>N;while(N --){cin>>k;while(tt && stk[tt] >= k) tt--;if(!tt) cout<<"-1 ";else cout<<stk[tt]<<" ";stk[++ tt] = k;}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36145.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36145.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36145.shtml

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

相關文章

Linux 基礎(九)軟件包管理

軟件包管理 概念軟件包管理工具Red Hat 系RPMrpm安裝rpm卸載 YUM&#xff08;推薦&#xff09;源倉庫管理常見國內 yum 源更換源&#xff08;非必須&#xff0c;除非下載速度確實過慢&#xff09; YUM管理軟件 Debian 系源倉庫管理常見國內 apt 源更換源&#xff08;非必須&…

postman入門基礎 —— 接口測試流程

一、編寫接口測試計劃 接口測試計劃和功能測試計劃目標一致&#xff0c;都是為了確認需求、確定測試環境、確定測試方法&#xff0c;為設計測試用例做準備&#xff0c;初步制定接口測試進度方案。一般來說&#xff0c;接口測試計劃包括概述、測試資源、測試功能、測試重點、測試…

Flutter 報錯 Could not create task ‘xxx‘.this and base files have different roots

遇到此問題也是先去百度了&#xff0c;有的說改了Gradle版本、gradle-wrapper.properties版本和ext.kotlin_version版本之后解決的&#xff0c;我沒嘗試&#xff0c;我用蹩腳的英語大致讀了一下就不是這樣說的&#xff0c;況且我用有道翻譯了也不是這個意思啊&#xff0c;我不知…

抖音小程序實現less語言編譯樣式

1.在抖音開發工具中搜索擴展less 2. 然后點擊小齒輪選擇擴展設置 3. 然后在擴展設置中選擇在settings.json中編輯# 4. 在settings.json中加入以下這段代碼即可 // Easy LESS配置"less.compile": {"compress": false,//是否壓縮"sourceMap": fal…

前端性能優化:緩存

在快節奏的互聯網時代&#xff0c;網站的加載速度直接影響用戶體驗和業務成功。而緩存作為性能優化的重要手段&#xff0c;可以大幅提升網頁加載速度&#xff0c;減少服務器負擔。本文將為你詳解緩存的使用&#xff0c;幫助你優化前端性能&#xff0c;為用戶呈現更快速、流暢的…

EndNote 21 for Mac(文獻管理軟件) v21.0.1中文版

EndNoter mac是一款參考文獻管理軟件&#xff0c;旨在幫助學術研究者、學生和專業人士有效地管理和引用參考文獻。該軟件提供了許多功能&#xff0c;使用戶可以輕松地組織、搜索和引用各種類型的文獻。 EndNoter mac軟件特點和功能 1. 參考文獻管理&#xff1a;EndNoter允許用…

提高 After Effects 效率的 40 個最佳快捷鍵

After Effects 是運動圖形和視覺效果的強大工具&#xff0c;但它也可能讓人不知所措。擁有如此多的特性和功能&#xff0c;很容易讓人迷失在軟件中。但是&#xff0c;有一種方法可以簡化您的工作流程并提高工作效率 - 使用鍵盤快捷鍵。 After Effects素材文件巨大、占用電腦內…

探索自動化網頁交互的魔力:學習 Selenium 之旅【超詳細】

"在當今數字化的世界中&#xff0c;網頁自動化已經成為了不可或缺的技能。想象一下&#xff0c;您可以通過編寫代碼&#xff0c;讓瀏覽器自動執行各種操作&#xff0c;從點擊按鈕到填寫表單&#xff0c;從網頁抓取數據到進行自動化測試。學習 Selenium&#xff0c;這一功能…

Claude 2、ChatGPT、Google Bard優劣勢比較

?Claude 2&#xff1a; 優勢&#xff1a;Claude 2能夠一次性處理多達10萬個tokens&#xff08;約7.5萬個單詞&#xff09;。 tokens數量反映了模型可以處理的文本長度和上下文數量。tokens越多&#xff0c;模型理解語義的能力就越強&#xff09;。它在法律、數學和編碼等多個…

一百五十二、Kettle——Kettle9.3.0本地連接Hive3.1.2(踩坑,親測有效)

一、目的 由于先前使用的kettle8.2版本在Linux上安裝后&#xff0c;創建共享資源庫點擊connect時頁面為空&#xff0c;后來采用如下方法&#xff0c;在/opt/install/data-integration/ui/menubar.xul文件里添加如下代碼 <menuitem id"file-openZiyuanku" label&…

layui的基本使用-日期控件的業務場景使用入門實戰案例一

效果鎮樓&#xff1b; 1 前端UI層面&#xff1b; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&…

TypeScript教程(五)條件語句,循環,函數

一、條件語句 條件語句基于不同的條件來執行不同的動作 1.if語句&#xff1a;只有當指定條件為true時&#xff0c;使用該語句來執行代碼 2.if...else語句&#xff1a;當條件為true時執行代碼&#xff0c;當條件為else時執行其他代碼 3.if...else if...else語句&#xff1a;…

Shell函數調用

定義一個函數&#xff0c;計算所有參數的和&#xff1a; #!/bin/bashfunction getsum(){local sum0for n in $do((sumn))donereturn $sum }getsum 10 20 55 15 #調用函數并傳遞參數 echo $?運行結果&#xff1a; 100

spss--數據分析Log-Binonial模型

在橫斷面研究中&#xff0c;Log-binomial 模型能夠獲得研究因素與結局變量的關聯強度指標患病率比&#xff08;PR&#xff09;&#xff0c;是一種研究二分類觀察結果與多因素之間關系的重要方法&#xff0c;在醫學研究等領域中得到了廣泛的應用。 采用log-binomial 模型可直接估…

elementUi表單恢復至初始狀態并不觸發表單驗證

elementUi表單恢復至初始狀態并不觸發表單驗證 1.場景再現2.解決方法 1.場景再現 左側是樹形列表&#xff0c;右側是顯示節點的詳情&#xff0c;點擊按鈕應該就是新增一個規則的意思&#xff0c;表單內容是沒有改變的&#xff0c;所以就把需要把表單恢復至初始狀態并不觸發表單…

大語言模型(LLM)與 Jupyter 連接起來了

現在&#xff0c;大語言模型&#xff08;LLM&#xff09;與 Jupyter 連接起來了&#xff01; 這主要歸功于一個名叫 Jupyter AI 的項目&#xff0c;它是官方支持的 Project Jupyter 子項目。目前該項目已經完全開源&#xff0c;其連接的模型主要來自 AI21、Anthropic、AWS、Co…

MSP432自主開發筆記6:定時器多通道捕獲多條編碼器線脈沖數

所用開發板&#xff1a;MSP432P401R 今日在此更新一下編碼器測速的定時器捕獲寫法&#xff0c;之前學習時竟然忘記更新了~~ 本文講如何用定時器的通道來 捕獲編碼器的脈沖信號數量&#xff0c;不提供速度路程的計算方式&#xff0c; 文章提供源碼&#xff0c;測試工程下載&a…

積木報表集成前端加載js文件404

項目場景&#xff1a; 在集成積木報表和shiro時候&#xff1a; 集成積木報表&#xff0c;shrio&#xff0c;shrio是定義在另一個模塊下的&#xff0c;供另一個啟動類使用&#xff0c;積木報表集成shrio的時候&#xff0c;需要依賴存放shrio的核心包&#xff0c;該核心包除了存…

android 如何分析應用的內存(十七)——使用MAT查看Android堆

android 如何分析應用的內存&#xff08;十七&#xff09;——使用MAT查看Android堆 前一篇文章&#xff0c;介紹了使用Android profiler中的memory profiler來查看Android的堆情況。 如Android 堆中有哪些對象&#xff0c;這些對象的引用情況是什么樣子的。 可是我們依然面臨…

【ArcGIS】經緯度數據轉化成平面坐標數據

將點位置導入Gis中&#xff0c;如下&#xff08;經緯度表征位置&#xff09;&#xff1a; 如何利用Gis將其轉化為平面坐標呢&#xff1f; Step1 坐標變換 坐標變換&#xff0c;打開ArcToolbox&#xff0c;找到“數據管理工具”->“投影和變換”->“要素”->“投影”…