题目来源
https://www.nowcoder.com/questionTerminal/eac8c671a0c345b38aa0c07aba40097b
题目描述
输入n个整数,输出出现次数大于等于数组长度一半的数。
输入描述:
每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。
输出描述:
输出出现次数大于等于n/2的数。
示例1
输入
3 9 3 2 5 6 7 3 2 3 3 3
输出
3
解题思路-String.split(String str)
和Integer.valueOf(String str)
的使用
- 用
String
类型的变量接收输入的一行。 - 用
String.split(" ")
空格作为分割符,达到去空格目的。 - 设一个
int[]
来存放要判断的所有数 - 找出出现次数达到
n/2
的数并返回。
实现代码
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); //1.取得字符串
String[] temp = str.split(" "); //2.以空格拆分,去空格操作
int[] array = new int[temp.length]; //3.String[] ->int[]
int n = array.length;
for (int i = 0; i < n; i++) {
array[i] = Integer.valueOf(temp[i]); //3.1取到所有数据
}
int num = array[0]; //4.从第一个数开始找
int count = 0;
for (int j = 1; j < n; j++) {
if (array[j] == num) { //4.1遍历数组的找相同值得个数
count++;
}
if (count >= n/2) { //4.2.1同时判断当前值得个数有没有超过半数,超过则直接输出
break;
} else { //4.2.2否则num后移
num = array[j];
}
}
System.out.println(num);
}
}