这题说实话不难,处理起来不太好做,一点一点改改通过了
p数组里最后一个应该定为一个垃圾值让他不满足任何条件以表明这是最后一项 这个搜索到此要停止。
class Solution { public: int longestMountain(vector<int>& A) { if(A.size()==0){ return 0; } int p[A.size()]; int i; for(i=0;i<A.size()-1;i++){ if(A[i]<A[i+1]){ p[i]=-1; }else if(A[i]>A[i+1]){ p[i]=1; }else{ p[i]=0; } } p[A.size()-1]=100; int maxx=0; int j; int len=0; i=0; int t=1; while(i<A.size()){ len=0; t=1; for(j=i;j<A.size();j++){ if(t==1){ if(p[j]==-1){ }else if(j>i&&p[j]==1){ t=2; cout<<i<<" "<<j<<"continue"<<endl; continue; }else{ j++; break; } }else if (t==2){ if(p[j]==1){ }else{ break; } } } if(t==2){ len=j-i; maxx=max(maxx,len+1); cout<<i<<" "<<j<<endl; } i=j; } return maxx; } };