首页 > 编程语言 >连号区间数java

连号区间数java

时间:2023-01-09 00:00:24浏览次数:42  
标签:小明 java String int 样例 区间 scanner

小明这些天一直在思考这样一个奇怪而有趣的问题:
在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是:
如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间。
当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助。

输入格式
第一行是一个正整数N (1 <= N <= 50000), 表示全排列的规模。
第二行是N个不同的数字Pi(1 <= Pi <= N), 表示这N个数字的某一全排列。
输出格式
输出一个整数,表示不同连号区间的数目。
样例输入1
4
3 2 4 1
样例输出1
7
样例输入2
5
3 4 2 5 1
样例输出2
9

/**
 * @version 1.0
 * @auther 孙沐华
 * 连号区间数
 */
public class test10 {
    public static void main(String[] args) {
        //如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)
        // 递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间。
        Scanner scanner = new Scanner(System.in);
        int sum=0;
        int N= Integer.parseInt(scanner.nextLine());
        ArrayList<Integer> list = new ArrayList<>();
        list.add(0);
        String line =scanner.nextLine();
        String[] split = line.split(" ");//该方法 分割 也就是见到一个空格就分开 空格表示分隔符
        for (int j = 0; j <split.length ; j++) {
            list.add(Integer.parseInt(split[j])); //这里只把数字留下
        }
        for (int i = 1; i <=N ; i++) {
            int max=0;
            int min=0;
            for (int j = i; j <=N ; j++) {
                if (i==j){
                    sum++;
                }else {
                    max = Math.max(max, list.get(j));
                    min = Math.min(min, list.get(j));
                    if (max - min == j - i + 1) {
                        sum++;
                    }
                }
            }
        }
        System.out.println(sum);
    }
}

 

 

标签:小明,java,String,int,样例,区间,scanner
From: https://www.cnblogs.com/xingxingbclg/p/17035797.html

相关文章

  • 10(结构型模式)java设计模式之代理模式
    一、什么是代理模式简介:代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。为其他对象提供—种代理以控制对这个对象的......
  • Java基础语法
    之前学习java记得笔记,但是一直没怎么遇到java类的题,平时也不用java,所以经常忘记,今天想起来了再看一遍,再把之前写的笔记整理整理发到博客上。Java预学习Jave的优势从互联......
  • JavaWeb三大组件之过滤器-Filter
    1.Filter过滤器Filter过滤器是javaEE的规范,是接口(javax.servletInterfaceFilter) 2.过滤器作用-拦截请求,过滤响应情景引入:浏览器访问tomcat的login页面,进行登录验证......
  • 客服系统前端开发:JavaScript删除对象数组中指定key value的对象【唯一客服】网页在线
    经常我们有这样的需要,比如有一个对象数组,我们要把这个数组里某个对象删除掉,根据他的某一个key的value来删除可以使用JavaScript的filter()方法来删除对象数组中指定k......
  • VsCode里面在JavaWeb项目里面配置Maven环境详解
    1、在之前已经新建完成一个JavaWeb项目的基础上开始2、设置里面搜索Maven,找到这个,然后进行定位3、将TomcatServer配置进去(右上角有一个加号)(对于已经学过Java的并不难......
  • 客服系统前端开发:JavaScript获取URL中的协议部分和域名部分【唯一客服】网页在线客服
    再客服系统中如果想要链接websocket需要确定是ws:// 还是wss://所以,我封装了两个函数,用于获取URL中的协议是HTTP还是HTTPS,以及获取到域名部分可以使用JavaScript中......
  • java锁机制详解
    java锁机制详解乐观锁和悲观锁自旋锁和自适应自旋锁无锁、偏向锁、轻量级锁、重量级锁可重入锁和不可重入锁公平锁和非公平锁独享锁和共享锁参考,转载原文地址:h......
  • VsCode新建Java、SpringBoot、Python、JavaWeb项目的基本步骤
    新建Java项目选中正上方的搜索框,按下F1快捷键,输入createJava,即可出现这样的一个命令:选中这个:然后为新创建的项目选择一个合适的位置就好啦!新建SpringBoot项目选中......
  • Java 并发 - Spliterator 接口
    Spliterator介绍Spliterator接口是Java为了并行遍历数据源中的元素而设计的迭代器,这个可以类比最早Java提供的顺序遍历迭代器Iterator,但一个是顺序遍历,一个是并行......
  • Kafka学习笔记(十二):Java Consumer
    JavaConsumerStringboostrapServers="127.0.0.1:9092";StringgroupId="my-second-application";Stringtopic="demo_java";//createconsumerconfigsProp......