出现的次数超过数组长度的一半的数字
package SwordToOffer;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Create by ~JH~ on 2018/5/2
* 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
* 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。
* 由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
*/
public class MoreThanHalfNum_Solution {
public int MoreThanHalfNum_Solution(int [] array) {
Map< Integer,Integer> map=new HashMap<>();
int n,len=array.length;
for(int i:array){
if(!map.containsKey(i)){
map.put(i,1);
}else{
n=map.get(i);
n++;
map.put(i,n);
}
}
Set<Map.Entry<Integer,Integer>> set= map.entrySet();
int value,key;
for (Map.Entry<Integer,Integer> m:set){
key= m.getKey();
value=m.getValue();
System.out.println("key:"+key+" value:"+value);
if (value>len/2 )
return key;
}
return 0;
}
public static void main(String[] args) {
MoreThanHalfNum_Solution m=new MoreThanHalfNum_Solution();
int s[]={1,2,3,2,4,2,5,2,3};
System.out.println(m.MoreThanHalfNum_Solution(s));
}
}