十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
題目在這里捏:
整數(shù)數(shù)組如果是單峰的,滿足:
·第一部分一開始就在嚴(yán)格增加
·第二部分此后它是恒定的
·此后第三部分,它將嚴(yán)格降低
第一個部分(增加)和最后一部分(減少)可能不存在。允許這兩部分不存在。
例如,以下三個數(shù)組是單峰的:[5,7,11,11,2,1],[4,4,2],[7],但以下三個數(shù)組不是單峰的:[5,5,6,6,1],[1,2,1,2],[4,5,5,6]。
編寫一個程序,檢查數(shù)組是否是單峰的。
測試數(shù)據(jù)
樣例輸入1:
6
1 5 5 5 4 2
樣例輸出1:
YES
樣例輸入2:
5
10 20 30 20 10
樣例輸出2:
YES
樣例輸入3:
4
1 2 1 2
樣例輸出3:
NO
樣例輸入4:
7
3 3 3 3 3 3 3
樣例輸出4:
YES
樣例輸入5:
6
5 5 5 4 4 4
樣例輸出4:
NO
淺淺分析一下哈
根據(jù)題目可知單峰數(shù)組可分為
(1).標(biāo)準(zhǔn)的先增加在穩(wěn)定后減小
(2).沒有前面的嚴(yán)格增加,直接減小
可以先從前往后找到一個大值l,再從后往前找到一個大值r,以此來將數(shù)組分為1~l,l~r,r~n三段,再對三段逐一核驗是否復(fù)=符合對應(yīng)的條件即可啦~~~
#include//單峰數(shù)組
using namespace std;//先增后減
int main(){
int i,j,n,a[1001],l,r;
cin>>n;
for(i=1;i<=n;i++) cin>>a[i];
int max1=-1e9;
for(i=1;i<=n;i++){
if(a[i]>max1){
max1=a[i];
l=i;//尋找到左邊的大值邊界
}
}
int max2=-1e9;
for(i=n;i>=1;i--){
if(a[i]>max2){
max2=a[i];
r=i;//右邊大值的邊界
}
}
// cout<=a[i+1])
f1=0;
break;
}
for(i=l;i
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧