1.题目如下:
(旁白:超时问题没有解决,这道题很折磨,但是不要想得太复杂)
英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数” E ,即满足有 E 天骑车超过 E 英里的最大整数
E。据说爱丁顿自己的 E 等于87。现给定某人 N 天的骑车距离,请你算出对应的爱丁顿数 E(≤N)。
输入格式:
输入第一行给出一个正整数 N (≤10^5 ),即连续骑车的天数;第二行给出 N 个非负整数,代表每天的骑车距离。
输出格式:
在一行中给出 N 天的爱丁顿数。
输入样例:
10
6 7 6 9 3 10 8 2 7 8
输出样例:
6
代码长度限制 16 KB 时间限制 250 ms 内存限制 64 MB
2.代码如下:
package pat_1060;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Collections;
public class testPractice1060 {
public static void main(String[] args) {
Scanner scn1=new Scanner(System.in);
int N=Integer.parseInt(scn1.nextLine());
String num=scn1.nextLine();
scn1.close();
String[] strNums=num.split(" ");
int[] intNums=new int[N];
ArrayList<Integer> nums=new ArrayList<Integer>();
for(int i=0;i<N;i++) {
intNums[i]=Integer.parseInt(strNums[i]);
nums.add(Integer.parseInt(strNums[i]));
}
Collections.sort(nums);
System.out.println(nums);
int isHave=0;
int tempDay=0;
for(int i=N-1;i>0;i--) {
tempDay++;
isHave=0;
if(nums.get(i)>tempDay) {
if(nums.get(i-1)<=tempDay+1) {
isHave=1;
System.out.println(tempDay);
break;
}
}
}
if(isHave==0) {
System.out.println(0);
}
}
}