給定乙個長度為n的整數數列,輸出每個數左邊第乙個比它小的數,如果不存在則輸出-1。
[輸入格式]
第一行包含整數n,表示數列長度。
第二行包含n個整數,表示整數數列。
[輸出格式]
共一行,包含n個整數,其中第i個數表示第i個數的左邊第乙個比它小的數,如果不存在則輸出-1。
[資料範圍]
1≤n≤105
1≤數列中元素≤109
[輸入樣例]
53 4 2 7 5
[輸出樣例]:
-1 3 -1 2 2
打暴力顯然超時,但通過建立乙個單調下降的棧,棧頂為最優,時間複雜度降低到o(n)。
stl **如下
棧:s.empty()//如果棧為空返回true,否則返回false
s.size()//返回棧中元素的個數
s.pop()//刪除棧頂元素但不返回其值
s.top()//返回棧頂的元素,但不刪除該元素
s.push(x)//在棧頂壓入新元素 ,引數x為要壓入的元素
#include
//yjyj
using
namespace std;
stack <
int>a;
int n;
intmain()
return0;
}
手寫同理
#include
//yjyj
using
namespace std;
int a[
10008];
int n,top;
intmain()
return0;
}
演算法練習 830 單調棧
830.單調棧 給定乙個長度為n的整數數列,輸出每個數左邊第乙個比它小的數,如果不存在則輸出 1。輸入格式 第一行包含整數n,表示數列長度。第二行包含n個整數,表示整數數列。輸出格式 共一行,包含n個整數,其中第i個數表示第i個數的左邊第乙個比它小的數,如果不存在則輸出 1。資料範圍 1 n 105...
漢諾塔 手寫出棧壓棧過程實現
實現 1 include23 函式的形參a b c不一定代表的是a b c柱子,遞迴傳參的時候會變化!4void hanoit int n,char a,char b,charc 9 else19 2021 intmain view code 主函式傳參hanoit 2,a b c 壓棧1。n 1,...
手寫數字識別的全棧嘗試
心血來潮想進行一次full stack嘗試,以前一直做單機的開發,沒有做過web service。web service比單機應用會更加容易傳播,不會對使用者有太多的要求。之前就有考慮過前端和後台通訊的問題,但一直沒有真正去實現過,這次還是遇到了一些問題。整個專案的邏輯是,使用者在前端網頁手寫乙個數...