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

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

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

解题思路:遍历数组,用哈希表存储每个数字出现的次数。当出现次数等于长度的一半时,就可以返回该数字了;否则,返回0。注意:数组为空和数组长度为1的情况;另外,在哈希表中若用整型作为key,需用Integer.valueOf()将其转化下,不然易于索引混淆。

import java.util.*;

public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        int num=0;
        if(array!=null){
            num=array.length/2;
            HashMap<Integer,Integer> count=new HashMap<>();
            int m=0;
            for(int i=0;i<array.length;i++){
                if(count.containsKey(Integer.valueOf(array[i]))){
                    m=count.get(Integer.valueOf(array[i]));
                    if(m==num){
                        return array[i];
                    }
                    count.replace(Integer.valueOf(array[i]),m+1);
                }
                else{
                    count.put(Integer.valueOf(array[i]),1);
                    if(num==0){
                        return array[i];
                    }
                }
            }
            return 0;
        }
        return num;
    }
}
全部评论

相关推荐

01-30 22:03
门头沟学院 Java
用微笑面对困难:我滴妈,【俩月】【实习】【主管】仨debuff吃满了,独立设计开发的项目写了绝大占比的运营板块,你独立开发,那维护、问题复盘、日志更新、bug、策划书全是自己整的? 不建议写那么大,可以从小出发更容易
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务