题目明确规定了数字的范围, 那么就可以使用数组来做.
再思考一下, 如果没有规定数字的范围, 也就是要使用容器来做这题, 那该怎么写呢.
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); } }