好未来:n个数里出现次数大于等于n/2的数
题目描述
输入n个整数,输出出现次数大于等于数组长度一半的数。
输入描述:
每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。
输出描述:
输出出现次数大于等于n/2的数。
示例1
输入
3 9 3 2 5 6 7 3 2 3 3 3
输出
3
思路:同《剑指Offer》 数组中出现次数超过一半的数字
import java.util.*;
public class Main {
// 不考虑【1,1,1,2,2,2】的情况
public static int solution(String[] arr) {
int num = Integer.parseInt(arr[0]);
int count = 0;
for(int i = 1; i < arr.length; i++) {
int temp = Integer.parseInt(arr[i]);
if(temp == num) {
count++;
}else if(count > 0) {
count--;
}else {
num = temp;
}
}
return num;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
String[] arr = line.split(" ");
int result = solution(arr);
System.out.println(result);
sc.close();
}
}