题解 | #牛牛的数列#

牛牛的数列

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

牛牛的数列

JAVA版本dp

public int maxSubArrayLength (int[] nums) {
        int len = nums.length;
        if(len == 0){
            return 1;
        }
        // 以 head[i]为头的最长子序列
        int[] head = new int[len];
        // 以 tail[i]为尾的最长子序列
        int[] tail = new int[len];

        for(int i = 0 ; i < len ; i ++){
            if(i == 0){
                tail[i] = 1;
            }else{
                if(nums[i] > nums[i-1]){
                    tail[i] = tail[i-1] + 1;
                }else {
                    tail[i] = 1;
                }
            }
        }
        for(int i = len - 1; i >= 0; i --){
            if(i == len - 1){
                head[i] = 1;
            }else{
                if(nums[i + 1] > nums[i]){
                    head[i] = head[i+1] + 1;
                }else {
                    head[i] = 1;
                }
            }
        }
        int max = 1;
        for(int i = 1 ; i < len - 1 ; i ++){
            max = Math.max(max , Math.max(head[i] , tail[i]));
            //判断前后的两个值得差值是不是大于2,如果大于2说明就可以改变当前值
            if(nums[i+1] - nums[i-1] >= 2){
                max = Math.max(max , head[i + 1] + tail[i - 1] + 1);
            }
        }
        return max;

    }
全部评论
为什么我运行 [8,10,5] 这个序列,得到的结果为 2?难道不应该是 3 吗?
点赞 回复 分享
发布于 2021-04-29 10:01
应该是,8,10,比10大的数,是3
点赞 回复 分享
发布于 2021-04-29 16:08
能不能发布一个正确的答案....
点赞 回复 分享
发布于 2021-09-07 11:01

相关推荐

11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
评论
3
收藏
分享
牛客网
牛客企业服务