輸入乙個一位陣列,找出這個陣列中,所有滿足以下條件的元素:
1. 這個數左邊的所有元素都小於他;
2. 這個數右邊的數都大於他。
樣例:輸入: 輸出:[9
,15,10
,11,20
,39][
9,20,
39]
採用單調棧,入棧的條件:
如果當前的棧頂元素, st.top()>a[i],那麼當前棧頂元素肯定不滿足,所以需要一直pop,直到st.pop()a[i],所以a[i]也是不滿足條件的,所以a[i]也沒有權利入棧。
如果a[i]想要入棧,那麼他要滿足st.top()
#include
#include
#include
#include
#include
using
namespace std;
void
solution
(vector<
int>
& a)
else}}
max_val =
max(max_val, a[i]);
}while
(!st.
empty()
) cout<}int
main()
;solution
(test)
;system
("pause");
}
14 求滿足條件的3位數
總時間限制 1000ms 記憶體限制 65536kb 描述編寫程式,按從小到大的順序尋找同時符合條件1和2的所有3位數,條件為 1.該數為完全平方數 2.該數至少有2位數字相同 例如,100同時滿足上面兩個條件。輸入輸入乙個數n,n的大小不超過實際滿足條件的3位數的個數。輸出輸出為第n個滿足條件的3...
1077 統計滿足條件的4位數
時間限制 1000 ms 記憶體限制 65536 kb 題目描述 給定若干個四位數,求出其中滿足以下條件的數的個數 個位數上的數字減去千位數上的數字,再減去百位數上的數字,再減去十位數上的數字的結果大於零。輸入 輸入為兩行,第一行為四位數的個數n,第二行為n個的四位數。n 100 輸出 輸出為一行,...
找到滿足條件的陣列
給定函式d n n n的各位之和,n為正整數,如d 78 78 7 8 93。這樣這個函式可以看成乙個生成器,如93可以看成由78生成。定義數a 數a找不到乙個數b可以由d b a,即a不能由其他數生成。現在要寫程式,找出1至10000裡的所有符合數a定義的數。先申請乙個長度為10000的bool陣...