LeetCode21|主要元素

本文介绍了一种使用HashMap解决数组中寻找占比超过一半的主要元素的问题。通过示例和代码详细解析了如何利用键值对集合实现这一目标。

1,问题简述

数组中占比超过一半的元素称之为主要元素。

给定一个整数数组,找到它的主要元素。

若没有,返回-1。

2,示例

输入:[1,2,5,9,5,9,5,5,5]
输出:5

3,题解思路

键值对集合HashMap的使用

4,题解程序

 
import java.util.HashMap;
import java.util.Map;


public class MajorityElementTest {
    public static void main(String[] args) {
        int[] array = {1, 2, 5, 9, 5, 9, 5, 5, 5};
        int majorityElement = majorityElement(array);
        System.out.println("majorityElement = " + majorityElement);
    }


    public static int majorityElement(int[] nums) {
        if (nums == null || nums.length == 0) {
            return -1;
        }
        int length = nums.length;
        HashMap<Integer, Integer> hashMap = new HashMap<>(length);
        for (Integer num : nums
        ) {
            if (hashMap.containsKey(num)) {
                hashMap.put(num, hashMap.get(num) + 1);
            } else {
                hashMap.put(num, 1);
            }
        }
        return hashMap.entrySet().stream().filter(entry -> entry.getValue() > length / 2).findFirst().map(Map.Entry::getKey).orElse(-1);
    }
}


5,总结

这道题采用键值对集合的进行解决还是很常见的一种思路,算法题一直是自己喜欢的题,但是上学的时候自己javaAPI都不是很熟悉的我自然而然不会做这样的题,现在看现在的博客账号都开通好几年了,但是文章却一直没有发过,一直在吸收技术的路上,没有时间去输出,自从去年10月份时觉得有必要输出一些自己的东西了,才慢慢做到了今天,写这类题主要是为了磨平曾经自己缺少的技术,毕竟会总比不会要好一些,但是作用不是很大,主要看自己是否喜欢来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值