zoukankan      html  css  js  c++  java
  • PAT——1060. 爱丁顿数

    英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E。据说爱丁顿自己的E等于87。

    现给定某人N天的骑车距离,请你算出对应的爱丁顿数E(<=N)。

    输入格式:

    输入第一行给出一个正整数N(<=105),即连续骑车的天数;第二行给出N个非负整数,代表每天的骑车距离。

    输出格式:

    在一行中给出N天的爱丁顿数。

    输入样例:

    10
    6 7 6 9 3 10 8 2 7 8
    

    输出样例:

    6
    
     1 package com.hone.basical;
     2 import java.util.Arrays;
     3 import java.util.Scanner;
     4 /**
     5  * 原题目:https://www.patest.cn/contests/pat-b-practise/1059
     6  * @author Xia
     7  * 思路:拿到这个题目的第一个想法是将所有的数据排序,然后从大到小开始输出。
     8  * 试想一下最佳的情况:第i天的时候,刚好a[i] = (大于a[i]的天数)=N-i,则大于a[i]的天数则为N-i-1
     9  * 那么如果没有相等的情况,则刚好a[i] 小于(大于a[i]的天数)=N-i 的时候,输出结果,并且跳出循环(这是为什么if里面取<=)
    10  * 特殊情况:如果给定N天,并且每一天的骑行都大于N,则直接输出N
    11  * 还是有一个测试点超时!!!
    12  */
    13 
    14 public class basicalLevel1060EddingtonNumber {
    15 
    16     public static void main(String[] args) {
    17         Scanner in = new Scanner(System.in);
    18         int N = Integer.parseInt(in.nextLine());        //骑车的天数
    19         int[] a = new int[N];
    20         for (int i = 0; i < N; i++) {
    21             a[i] = in.nextInt();
    22         }
    23         
    24         Arrays.sort(a);
    25         if (a[0] > N) {
    26             System.out.println(N);
    27         }
    28         for (int i = a.length-1; i >= 0; i--) {
    29             if (a[i] <= a.length-i) {        //这里不能等于,应该小于等于(a.length-i)表示对应的天数
    30                 System.out.println(N-1-i);
    31                 break;
    32             }
    33         }
    34     }
    35 }
  • 相关阅读:
    java语言基础
    常用4种限流算法介绍及比较
    如何用Redis实现分布式锁
    翻转字符串
    JAVA之io流
    JAVA之Collections集合
    【转】IT行业岗位以及发展方向
    JAVA之字符串
    JAVA之数组
    Linux之判断字符串是否为空
  • 原文地址:https://www.cnblogs.com/xiaxj/p/8004526.html
Copyright © 2011-2022 走看看