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

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

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

方法一 投机取巧法(参考官解)

并且给定的数组总是存在多数元素。

根据这句话,我假定必定存在,数组中出现次数超过一半的数字。那我只要将它排序,再把中间值返回即可。

import java.util.Arrays;
public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
       Arrays.sort(array);
       return array[array.length/2];  
    }
}

方法二 哈希法

首先要注意题目的数据范围。1<=数组长度<=50000,0<=数组元素<=10000。

我建立一个数组temp,存放数字出现的次数。1的次数就存放在temp[1],2的次数就存放在temp[2]。最后遍历temp,下标就是数值,返回即可。

int temp[] = new int[10000];
        for(int i=0;i<array.length;i++){
            temp[array[i]]++;
        }
        int maxCount = 0;
        int maxCountValue = 0;
        for(int i=0;i<temp.length;i++){
            if(temp[i]>maxCount) {
                maxCount = temp[i];
                maxCountValue = i;
            }
        }
        return maxCountValue;
全部评论

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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