題目描述
給定乙個長度為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)
#include
using
namespace std;
const
int n=
100010
;int s[n]
,tt;
//s為模擬棧, tt為棧頂
int n;
intmain()
return0;
}
演算法2
(stl) o(n)
#include
#include
#include
using
namespace std;
const
int n=
100010
;int n;
int a[n]
;stack<
int> stk;
intmain()
for(
int i =
0; i < n; i ++
) cout << a[i]
<<
" ";
cout << endl;
return0;
}
總結
單調棧的常見模型:
找出每個數左邊理它最近的比它大 / 小的數
int tt =0;
for(
int i =
1; i <= n; i ++
)
資料結構之單調棧
dev.c 資料結構之單調棧 從數學上來講,函式的單調性也可以叫做函式的增減性。當函式f x 的自變數在其定義區間內增大 或減小 時,函式值f x 也隨著增大 或減小 則稱該函式為在該區間上具有單調性。換句話來說,函式的單調性就是在區間內的自變數只增或只減。我們說,數學中函式在一段區間內自變數只增或...
資料結構 單調棧
上班無事,刷力扣發現了個新名詞 單調棧 題目 496.下乙個更大元素 i 名字上就聽的出來,單調棧中存放的資料應該是有序的,所以單調棧也分為單調遞增棧和單調遞減棧 單調遞增棧 棧中資料出棧的序列為單調遞增序列 單調遞減棧 棧中資料出棧的序列為單調遞減序列 ps 這裡一定要注意所說的遞增遞減指的是出棧...
資料結構 單調棧
這是筆者的第一篇部落格,由於筆者自身水平的限制。用詞可能不夠準確,句子不太通順,水平可能也不太行,敬請指出,感激不盡!我們都知道棧 stack 是一種先入後出的資料結構,而單調棧建立在棧的基礎上,它區別於普通的棧的特殊之處在於 棧中的元素一直保持著單調遞增 單調遞減的關係 比如單調遞增棧中的元素自棧...