问题描述:n个数里出现次数大于等于n/2的数
解题思路:关键方法:
str.split(" "):按照空格切分字符串
Integer.valueOf(str):将数字字符串转为int
代码示例:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String str = in.nextLine();
String[] strs = str.split(" ");
int[] arr = new int[strs.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.valueOf(strs[i]);
}
int num = arr[0];
int count = 0;
for(int j=1;j<arr.length;j++){
if(arr[j]==num){
count++;
} else if (count > 0) {
count--;
} else {
num = arr[j];
}
}
System.out.println(num);
}
}
}
思路二:使用哈希Map存储数字出现的次数
private static void halfTime(int[] array){
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0;i<array.length;i++){
int m= map.getOrDefault(array[i],0);
map.put(array[i],m+1);
}
for(int key:map.keySet()){
if(map.get(key)>=array.length/2){
System.out.println(key);
return ;
}
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String x=sc.nextLine();
String[] c=x.split(" ");
int[] s=new int[c.length];
for(int j=0;j<c.length;j++){
s[j]=c[j].charAt(0)-'0';
}
halfTime(s);
}