关闭

牛牛的数列

标签: 牛客网17年5月模拟
1232人阅读 评论(0) 收藏 举报
分类:

牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。
输入描述:
输入包括两行,第一行包括一个整数n(1 ≤ n ≤ 10^5),即数列的长度;
第二行n个整数a_i, 表示数列中的每个数(1 ≤ a_i ≤ 10^9),以空格分割。

输出描述:
输出一个整数,表示最长的长度。

输入例子:
6
7 2 3 1 5 6

输出例子:
5


AC代码:

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
        int[] pre = new int[100005];            //从前往后最大递增子序列
        int[] suf = new int[100005];            //从后往前最大递增子序列
        int[] num = new int[100005];
        Arrays.fill(pre,1);
        Arrays.fill(suf, 1);
        for ( int i = 1 ; i <= N ; i++){
             num[i] = in.nextInt();
        }

        for ( int i = 1 ; i <= N ; i++){
            if ( num[i] > num[i-1]){
                pre[i] = pre[i-1]+1;
            }
        }

        for ( int i = N ; i >= 1 ; i--){
            if (num[i] < num[i+1]){
                suf[i] = suf[i+1]+1;
            }
        }

        int res = 1;
        for(int i = 1 ; i <= N ; i++){
            res = Math.max(res, pre[i-1]+1);
            res = Math.max(res, suf[i+1]+1);//以上两步是在找当前最长递增子序列,无论正的或者反的
            if(num[i+1] - num[i-1] >= 2){
                res = Math.max(res, pre[i-1]+suf[i+1]+1);
            }
        }
        System.out.println(res);

        in.close();
    }

}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

牛牛的数列-Java-牛客模拟三

关键还是要理解操作过程。 package 模拟三; import java.util.Scanner; /** * 题目描述:牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且...
  • qq_30507287
  • qq_30507287
  • 2017-05-26 22:07
  • 591

java实现牛牛算法

备个份,每天一小步,一年一大步
  • htmlman01
  • htmlman01
  • 2017-05-16 13:41
  • 2382

如何在浏览器控件中使用牛牛截图控件

上次发布牛牛截图控件后,非常多的朋友感兴趣,也有不少朋友把此控件集成进了他们的产品中进行商用;对此我非常欣慰,能帮助其他人节省时间,确实是件值得高兴的事。   但最近好几个朋友都表示通过动态库加载的方...
  • TragicGuy
  • TragicGuy
  • 2014-04-20 23:27
  • 4232

2017年2月更新微信红包牛牛游戏运营版源码

这套源码是以模仿微信红包功能为基础,针对当下微信群里的一些流行玩法,如接龙、牛牛、扫雷玩法游戏所开发,规范的游戏化流程,以虚拟币论输赢的方式进行游戏的网站系统。 首页截图 ...
  • zouming16888
  • zouming16888
  • 2017-02-25 13:48
  • 2816

网易编程题(3)

牛牛和 15 个朋友来玩打土豪分田地的游戏,牛牛决定让你来分田地,地主的田地可以看成是一个矩形,每个位置有一个价值。分割田地的方法是横竖各切三刀,分成 16 份,作为领导干部,牛牛总是会选择其中总价值...
  • zjucor
  • zjucor
  • 2017-03-23 11:13
  • 509

[分享]牛牛截图控件2.0版本发布

牛牛截图现已对多显示器,DPI放大进行了完美支持,欢迎试用。   在上一个版本发布后,收到非常多朋友的反馈,近期有了些时间,对控件进行了升级;同时对比测试了几大主流的截图功能,除了腾讯QQ最新版,其他...
  • TragicGuy
  • TragicGuy
  • 2015-03-01 10:52
  • 2372

完整大番薯H5牛牛源码 房卡牛牛搭建教程

完整的H5大番薯牛牛源码联系方式: QQ:2747044651 H5房卡牛牛源码 6人/9人牛牛 H5微信小游戏牛牛 手机H5牛牛游戏源码附详细架设教程   游戏环境配置:  ...
  • h5zhengtuwlcom
  • h5zhengtuwlcom
  • 2017-11-14 16:47
  • 1427

二人牛牛与通比牛牛

1、结算失败时_右侧文字的位置不对.png 2、删除金牛相关的代码、判断、及其金牛的图片 3、调整牛牛的位置 4、优化了显示牛值的代码结构 5、等待游戏进入的画面的大小和在其上面图片的布局 6、调整...
  • jb351585372
  • jb351585372
  • 2016-05-12 17:48
  • 340

H5六人牛牛源码合集代码分享

方式1:我们知道子集个数 2的n次方 比如a,b,c的子集 * 000 0 {} *001 1 a *010 2 b *011 3 a,b (b,a) *100 4 c * 101 5 a,c (...
  • q1216899899_25u
  • q1216899899_25u
  • 2017-12-19 11:24
  • 538

微信H5牛牛搭建教程

微信H5牛牛搭建教程首先 我们要准备几个必用的东西 - 1.lunix服务器 - 2.已备案域名 - 3.已认证服务号第一步 用notepad++打开源码修改IP和域名 修改微信TOKE...
  • qq_27804815
  • qq_27804815
  • 2017-11-27 14:32
  • 1124
    个人资料
    • 访问:138598次
    • 积分:4744
    • 等级:
    • 排名:第7079名
    • 原创:327篇
    • 转载:0篇
    • 译文:0篇
    • 评论:80条
    博客专栏
    最新评论