PAT(B) 1060 爱丁顿数(Java:21分)

题目链接:1060 爱丁顿数 (25 point(s))

题目描述

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

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

输入格式

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

输出格式

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

测试样例

Case 0:

10
6 7 6 9 3 10 8 2 7 8
6

Case 1:

10
12 13 14 15 16 17 18 19 20 21
10

Case 1:

10
0 0 0 0 0 0 0 0 0 0
0

分析💬

这道题目其实可以用二分查找做,但是我怎么写着写着,越来越复杂,把自己绕晕了。所以直接用循环遍历算了。当然这样肯定有一组数据是超时的。。

Java代码

/**********************************************************************************
Submit Time			Status	Score	Problem	Compiler		Run Time	User
8/26/2019, 21:37:54	PA		21		1060	Java (openjdk)	84 ms		wowpH
Case 3: TLE
**********************************************************************************/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
	private static BufferedReader input;		// 输入流
	private static int numberOfDays;			// 天数
	private static int[] cyclingDistance;		// 骑车距离

	private static void initBufferedReader() {	// 初始化输入流
		InputStreamReader isr = new InputStreamReader(System.in);
		input = new BufferedReader(isr);
	}

	private static void inputData() {							// 输入数据
		try {
			numberOfDays = Integer.parseInt(input.readLine());	// 天数

			String str = input.readLine();
			String[] arr = str.split(" ");
			cyclingDistance = new int[numberOfDays];			// 骑车距离
			for (int i = 0; i < numberOfDays; ++i) {
				cyclingDistance[i] = Integer.parseInt(arr[i]);
			}
		} catch (Exception e) {
		}
	}

	private static int getEddington() {					// 获取爱丁顿数
		for (int i = 0; i < numberOfDays; ++i) {
			if (numberOfDays - i < cyclingDistance[i]) {// 满足条件
				return numberOfDays - i;				// 返回爱丁顿数
			}
		}
		return 0;										// 无满足条件,则返回 0
	}

	public static void main(String[] args) {
		initBufferedReader();				// 初始化输入流

		inputData();						// 输入数据

		Arrays.sort(cyclingDistance);		// 升序排序

		int e = getEddington();				// 获取爱丁顿数
		System.out.println(e);
	}
}

提交结果

在这里插入图片描述

posted @ 2019-08-26 22:27  wowpH  阅读(202)  评论(0编辑  收藏  举报