• LeetCode--面试题 17.10. 主要元素


    数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。

    示例 1:

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

    示例 2:

    输入:[3,2]
    输出:-1
     

    示例 3:

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

    说明:
    你有办法在时间复杂度为 O(N),空间复杂度为 O(1) 内完成吗?

     public static int majorityElement(int[] nums) {
            int size = nums.length;
            if (size == 1) {
                return nums[0];
            }
            int k = 1;
            int j = 0;
            Map<Integer,Integer> map = numsToMap(nums);
            for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
                if(entry.getValue() > 1 && entry.getValue() > k && entry.getValue() > size/2){
                    k = entry.getValue();
                    j = entry.getKey();
                }
            }
            if(k > 1){
                return j;
            }
            return -1;
        }
        
        public static Map<Integer,Integer> numsToMap(int[] nums){
            Map<Integer,Integer> returnMap = new HashMap<>();
            for (int i = 0; i < nums.length; i++) {
                if(returnMap.containsKey(nums[i])){
                    returnMap.put(nums[i], returnMap.get(nums[i]) + 1 );
                }else {
                    returnMap.put(nums[i], 1);
                }
            }
            return returnMap;
        }
  • 相关阅读:
    五、Django的模板渲染和继承
    四、Django的views
    三、Django的urls
    ubuntu超过4G如何备份成iso文件
    15张vim速查表
    这样配置你的IDEA工作效率提高好几倍!
    git用法
    数据库 | MySQL日志管理
    异常处理
    池 concurrent.futrues
  • 原文地址:https://www.cnblogs.com/shisanye/p/13947814.html
Copyright © 2020-2023  润新知