Java求众数

前言

用Java来求一个数组的众数,可使用HashMap、栈等数据结构完成。

一、例题、解答

1、例题

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:
输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2

2、解答

A、HashMap

用HashMap快速解题,记录每个元素出现的个数,如果个数大于 len / 2 ,认为其就是众数。

public int majorityElement(int[] nums) {
   
        //Hash Map快速解题
        //用map记录num的长度,然后判断它是否大于len/2
        Map<Integer, Integer> record = new HashMap<>();
        int len = nums.length;
        for (int i = 0; i < len; i++) {
   
            int n = record.getOrDefault(nums[i], 0) + 1;
            if (n > len / 2)
                return nums[i];
            record.put(nums[i], n);
        }
        return 0;
    }

B、排序

对于数组,可对其排序,而众数一定在中间。

public int majorityElement2(int[] nums) {
   
        //排序,值必然在中间
        Arrays.sort(nums)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值