lyh20021209 2022-01-22 14:27 采纳率: 76.9%
浏览 36
已结题

一道PAT1060 爱丁顿数 运行超时

img


我查阅了一篇文章,按照他的算法写了一遍,然后发现运行超时了。请问具体哪里有问题?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        int N=Integer.parseInt(br.readLine());
        String[] strs=br.readLine().split(" ");
        int[] datas=new int[N];
        for(int i=0;i<N;i++) {
            datas[i]=Integer.parseInt(strs[i]);
        }
        Arrays.sort(datas);
        int E=0;
        for(int i=N;i>=0;i--) {
            int count=0;//超过N英里的天数
            for(int j=datas.length-1;j>=0;j--) {
                if(datas[j]>i) {
                    count++;
                }else {
                    break;
                }
            }
            if(count>=i) {
                E=i;
                break;
            }
        }
        System.out.print(E);
    }
}
//这个是我查阅的那篇文章的代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N = scan.nextInt();
        int[] a = new int[N];
        int E=0;
        for (int i = 0; i < N; i++) {
            a[i] = scan.nextInt();
        }
        Arrays.sort(a);

        for (int i = N; i >=0; i--) {//i是遍历的英里数,j是索引,用来遍历数组
            int count=0;//超过i英里的天数
            for(int j=N-1;j>=0;j--){
                if(a[j]>i){
                    count++;
                }
                else{
                    break;//如果a[j]没有超过i,说明大于i英里的已经遍历完了(因为数组已经sort过了),直接跳出去
                }
            }
            if(count>=i){//一旦天数大于等于了英里数,就说明这个英里数可以作为一个E,就把他赋值给E
                E=i;
                break;
            }//不用担心E不是所有中的最大值,因为i是递增的
        }//注意这里无论是i还是j都是倒着遍历的,可以保证第一次找到的E就是最大值
        System.out.print(E);
    }
}
//这个是我写的代码

请问bufferedreader和Scanner在读取数据时到底有什么不同?IO Exception是什么?放在这里有什么用?我查阅了一些资料后还是不理解,希望得到大家的帮助!
又:我查阅的那篇文章的链接:https://blog.csdn.net/haofandedaima/article/details/89421978?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164282219816781685367584%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164282219816781685367584&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-3-89421978.first_rank_v2_pc_rank_v29&utm_term=pat1060%E7%88%B1%E4%B8%81%E9%A1%BF%E6%95%B0+java&spm=1018.2226.3001.4187

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 1月30日
    • 创建了问题 1月22日

    悬赏问题

    • ¥20 c#使用NPOI向word表格中添加字段导致word有概率警告不可识别
    • ¥15 怎么使用hxe16进制编码器修改视频数据和图片一样!求教程!
    • ¥15 怎么用python模拟光的折射,反射,和全反射
    • ¥15 python打印机打印word和PDF文件出来的是乱码
    • ¥15 求达梦8数据库安装包
    • ¥15 YOLOv8模型网络结构更改后报错
    • ¥15 深度学习中梯度为None
    • ¥15 zynq烧写程序到flash后不运行
    • ¥15 裸板ESD问题的思考与实验
    • ¥15 electron+python