import java.util.Arrays;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
Scanner aScanner = new Scanner(System.in);
int n= aScanner.nextInt(); //读第一个
long a[] = new long[n]; //存放数组
long b[] = new long[n]; //备用数组 for(int i=0;i<n;i++)
{
a[i] = aScanner.nextInt();
}
int m = aScanner.nextInt();
int []l = new int[1001];
int []r = new int[1001];
int []k = new int[1001];
for(int i=0;i<m;i++)
{
l[i] = aScanner.nextInt();
r[i] = aScanner.nextInt();
k[i] = aScanner.nextInt();
for(int j=l[i]-1;j<r[i];j++)
{
b[j-l[i]+1] = a[j];
}
Arrays.sort(b);
System.out.println(b[b.length-k[i]]);
Arrays.fill(b, '\0'); }
}
}

  刚开始做的时候使用的二维数组,使用冒泡排序,但涉及到了三层循环,最后虽然结果出来了,但是运行超时。

  于是就需求更优化的方法,后来参考网上的标准答案后有一个排序函数可以用sort()函数,直接使用Arrays.sort()函数对数组进行从小到大的排序,每次得出结果后直接输出。

同时循环一次后需要对结果进行清空,我使用的是Arrays.fill()函数,用‘\0’来填充,但也有不足的地方,会在清空后都是0的形式存在,数组的长度没有变化,所以需要我之后进一步改进,最后的评测结果如图:仍旧有一个运行超时!!,仅供参考

注:网络查找标准答案代码(Java,未加头文件,自行加入):

public class Main
{
private static BufferedInputStream in = new BufferedInputStream(System.in);
public static void main(String[] args) throws IOException {
int []nums = new int[readint()]; for(int i=0;i<nums.length;i++)
{
nums[i] = readint();
}
for(int i=readint();i>0;i--)
{
int a = readint();
int b = readint();
int c = readint(); int[] tn = new int[b-a+1]; for(int j=0;j<tn.length;j++)
{
tn[j] = nums[a-1+j];
}
Arrays.sort(tn); System.out.println(tn[tn.length-c]);
}
} private static int readint()throws IOException {
// TODO Auto-generated method stub
int i,sum=0;
while(((i=in.read())&48)!=48||i>57); for(;(i&56)==48||(i&62)==56;i=in.read())
sum = sum*10+(i&15);
return sum;
}
}

算法---区间K大数查找 Java 蓝桥杯ALGO-1的更多相关文章

  1. 试题 算法训练 区间k大数查询 java题解

    资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正 ...

  2. Java实现 蓝桥杯 算法训练 区间k大数

    算法训练 区间k大数查询 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二 ...

  3. java 蓝桥杯算法提高 _1区间k大数查询

    import java.util.Scanner; public class _1区间K大数查询 { public static void main(String[] args) { Scanner ...

  4. 蓝桥杯 算法训练 区间k大数查询(水题)

    算法训练 区间k大数查询 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. ...

  5. 蓝桥杯--算法训练 区间k大数查询

                                                                                 算法训练 区间k大数查询   时间限制:1.0 ...

  6. 蓝桥杯算法训练 区间k大数查询

    算法训练 区间k大数查询   问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个 ...

  7. 蓝桥杯 ALGO-1:区间k大数查询

      算法训练 区间k大数查询   时间限制:1.0s   内存限制:256.0MB        问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个 ...

  8. 算法训练 区间k大数查询

    http://lx.lanqiao.org/problem.page?gpid=T11 算法训练 区间k大数查询   时间限制:1.0s   内存限制:256.0MB        问题描述 给定一个 ...

  9. 算法训练 区间K大数

    算法训练 区间k大数查询 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. ...

随机推荐

  1. ubuntu httpie使用方法

    HTTPie 是用 Python 写的,所以你可以在几乎所有地方(Linux,MacOSX,Windows)安装它.而且,在大多数的 Linux 发行版中都有编译好的安装包. Debian,Ubunt ...

  2. 第1次作业-Numpy练习

    1.创建一个边界值为1而内部都是0的数组,图例如下:[提示:]解此题可以先把所有值都设置为1,这是大正方形:其次,把边界除外小正方形全部设置为0.本题用到numpy的切片原理.多维数组同样遵循x[st ...

  3. Hibernate4之JPA规范配置详解

    @Table Table用来定义entity主表的name,catalog,schema等属性. 属性说明: name:表名 catalog:对应关系数据库中的catalog schema:对应关系数 ...

  4. python压测工具Locust

    python压测工具Locust Locust介绍 Locust作为基于Python语言的性能测试框架. 其优点在于他的并发量可以实现单机10倍于LoadRunner和Jmeter工具.他的工作原理为 ...

  5. [Next] 初见next.js

    next 简介 Next.js 是一个轻量级的 React 服务端渲染应用框架 next 特点 默认情况下由服务器呈现 自动代码拆分可加快页面加载速度 简单的客户端路由(基于页面) 基于 Webpac ...

  6. redis-分片(转)

    转:https://www.cnblogs.com/houziwty/p/5167075.html 分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包 ...

  7. webservice传输文件的三种方式

    1, 在接口中不定义,直接以附件形式传输. 2, 在接口参数中定义byte[]类型,文件在xml中以base64编码传输. 3, 在接口参数中定义DataHandler类型,然后使用MTOM形式来进行 ...

  8. java后端研发经典面试题总结

    垃圾回收算法 1.标记-清除算法 标记-清除算法是最基本的算法,和他的名字一样,分为两个步骤,一个步骤是标记需要回收的对象.在标记完成后统一回收被标记的对象.这个算法两个问题.一个是效率问题,标记和清 ...

  9. Activiti(1) - TaskRuntime API 入门

    目录 TaskRuntime API pom.xml 注册TaskRuntime实例 角色与分组 任务事件监听器 DemoApplication 源码 Activiti 是一个自动化工作流框架.它能帮 ...

  10. EF Core 实现读写分离的最佳方案

    前言 公司之前使用Ado.net和Dapper进行数据访问层的操作, 进行读写分离也比较简单, 只要使用对应的数据库连接字符串即可. 而最近要迁移到新系统中,新系统使用.net core和EF Cor ...