1. 程式人生 > 實用技巧 >leetcode845. 陣列中的最長山脈

leetcode845. 陣列中的最長山脈


這題說實話不難,處理起來不太好做,一點一點改改通過了

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;
    }
};