题解 | #最长山脉#

最长山脉

http://www.nowcoder.com/practice/f4e974a50eda429fbf36515a4197b148

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    int longestmountain(vector<int>& nums) {
        // write code here
        int n=nums.size();
        if(n<=2) return 0;
        vector<int>r(n);
        vector<int>l(n);
        l[0]=0;
        r[n-1]=0;
        for(int i=1;i<n;i++){
            if(nums[i]>nums[i-1]){//i号元素前面连续递增的元素个数
                l[i]=l[i-1]+1;
            }
        }
        for(int i=n-2;i>=0;i--){//i号元素后面连续递减的元素个数
            if(nums[i]>nums[i+1]){
                r[i]=r[i+1]+1;
            }
        }
        int res=0;
        for(int i=0;i<n;i++){
            if(l[i]>0&&r[i]>0&&res<r[i]+l[i]+1){//寻找最长山脉
                res=r[i]+l[i]+1;
            }
        }
        return res;
    }
};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务