题解 | #两数之和#
数组中出现次数超过一半的数字
http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163
import java.util.*; //牛客网居然还得自己导入jar包。。。,注意了,我说我为啥一直不能通过 public class Solution { public int MoreThanHalfNum_Solution(int [] array) { HashMap<Integer, Integer> mp = new HashMap<Integer, Integer>(); for(int i =0; i < array.length; i++){ if(!mp.containsKey(array[i])){ mp.put(array[i],1); }else{ mp.put(array[i], mp.get(array[i])+1); if(mp.get(array[i]) > array.length/2){ return array[i]; } } } return array[0];//我代码和其他人的都一样,和官方也一样,但就是不能通过数组这只有一个数的情况,所以当成特殊情况处理 } } import java.util.*; public class Solution { public int MoreThanHalfNum_Solution(int [] array) { //哈希表统计每个数字出现的次数 HashMap<Integer, Integer> mp = new HashMap<Integer, Integer>(); //遍历数组 for(int i = 0; i < array.length; i++){ //统计频率 if(!mp.containsKey(array[i])) mp.put(array[i], 1); else mp.put(array[i], mp.get(array[i]) + 1); //一旦有个数大于长度一半的情况即可返回 if(mp.get(array[i]) > array.length / 2) return array[i]; } return 0; } }