2018/12/08 PAT刷题 L1-034 点赞

题目明确规定了数字的范围, 那么就可以使用数组来做.

再思考一下, 如果没有规定数字的范围, 也就是要使用容器来做这题, 那该怎么写呢.

import java.io.BufferedReader;
import java.io.InputStreamReader;
 
public class Main {
 
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int b[] = new int[1001];  // 由于又明确数字表明总共的数字小于等于1000个, 因此使用数组是合理的. 
        for (int i = 0; i < N; i++) {
            String[] str = br.readLine().split(" ");
            int a = Integer.parseInt(str[0]);
            for (int j = 1; j <= a; j++) {  // 原先是j<a, 有两个点错误, 应该是j<=a , 应为输入的数字总共是a+1个.
                b[Integer.parseInt(str[j])]++;
            }
        }
        int max = 0;
        int maxindex = 0;
        for (int i = 0; i <= 1000; i++) {
            if (max < b[i]) {
                max = b[i];
                maxindex = i;
            }
            if (b[i] == max && i > maxindex) {
                max = b[i];
                maxindex = i;
            }
        }
        System.out.println(maxindex + " " + max);
    }
}

 

posted @ 2018-12-08 11:08  HHZZHH  阅读(139)  评论(0编辑  收藏  举报