题解 | #数组中出现次数超过一半的数字#

数组中出现次数超过一半的数字

http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

思路: 采用HashMap

  • 如果存在,则 map.put(val, count+1),判断count+1 > array.length/2,是则返回当前元素值val;
  • 如果不存在,则添加进map (val, 1)。
import java.util.*;

public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        // 采用hashmap,如果不存在,则添加进map (val, 1)
        // 如果存在,则 map.put(val, count+1),判断count+1 > array.length/2,是则返回
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int i=0; i<array.length; i++){
            if(map.containsKey(array[i])){
                map.put(array[i], map.get(array[i])+1);
                if(map.get(array[i]) > array.length/2) return array[i];
            }else{
                map.put(array[i], 1);
            }
        }
        return array[0];
    }
}
全部评论

相关推荐

我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务