leetcode845

先貼代碼

class Solution {
public:
    int longestMountain(vector<int>& A) {
        vector<int>dp(A.size(),0);
        int ans = 0;
        for(int i = 1;i < A.size();i++)
        {
            if(A[i] > A[i-1])
            {
                if(dp[i-1] >= 0) dp[i] = -2;
                else dp[i] = dp[i-1]-1;
            }
            else if(A[i] < A[i-1])
            {
                if(dp[i-1] > 0) dp[i] = dp[i-1]+1;
                else if(dp[i-1] < 0) dp[i] = -(dp[i-1]-1);
            }
            ans = max(ans,dp[i]);
        }
        return ans;
    }
};

這道題其實就是個分段函數,我用負數表示上升的山,如果山之前是上升的,現在有下降了,就用整數表示長度,否則一直上升的不是山,記錄的長度也一直是個負數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章