题目描述:输入n个整数,输出出现次数大于等于数组长度一半的数。
输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。
输出描述:输出出现次数大于等于n/2的数。
输入示例:3 9 3 2 5 6 7 3 2 3 3 3
输出示例:3
解法之一:
- /*输入n个整数,输出出现次数大于等于数组长度一半的数。*/
-
- package practice_completed;
- import java.util.*;
- public class Test {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- String str = "";
- ArrayList<Integer> a = new ArrayList<Integer>();
- str = in.nextLine();//以字符串形式接收输入的所有数字
- String[] c = str.split(" ");//按' '分割每一个数字,得到新的只含有数字的字符串数组
- for(int i = 0; i < c.length; i++){//将字符串数组中的每个数字字符转换成整型
- // String temp = String.valueOf(c[i]);
- a.add(Integer.parseInt(c[i]));//将整数赋值给数组列表
- }
- for(int i = 0; i < a.size(); i++){//遍历数组列表,查找符合条件的数字
- int flag = 0;
- for(int j = 0; j < a.size(); j++){
- if(a.get(i) == a.get(j)){
- flag++;
- }
- }
- if(flag >= a.size() / 2){//若flag大于等于数组长度的一半,输出当前的数字
- System.out.println(a.get(i));
- break;
- }
- }
- in.close();
- }
- }