zoukankan      html  css  js  c++  java
  • LeetCode | Majority Element

    Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.

    You may assume that the array is non-empty and the majority element always exist in the array.

    解法一:

    public class Solution {
        public int majorityElement(int[] num) {
            if(num.length == 1) return num[0];
            
            Arrays.sort(num);           //对num进行排序
            
            return num[num.length/2];   //中间值一定是majorityElement,否则不可能过半
        }
    }

    解法二:

    public class Solution {
        public int majorityElement(int[] num) {
            if(num.length == 1) return num[0];
            
            Arrays.sort(num);                //对数组进行排序
            
            int start = num[0];
            int count = 1;
            for(int i=1; i<num.length; i++){  //遍历数组,求连续相同的元素的个数
                if(start == num[i]){          //如果与start相同,count++
                    count++;
                    if(count > num.length/2) return num[i];
                } else{                       //如果与start不同,从num[i]开始重新统计连续相同的个数
                    start = num[i];
                    count = 1;
                }
            }
            
            return -1;   //查找失败
        }
    }

    解法三:

    public class Solution {
        public int majorityElement(int[] num) {
            if(num.length == 1) return num[0];
            
            Map<Integer, Integer> myMap = new HashMap<Integer, Integer>();
            for(int i=0; i<num.length; i++) {    
                if(myMap.containsKey(num[i])){              //利用HashMap来统计num数组中各个元素出现的个数
                    myMap.put(num[i], myMap.get(num[i])+1);   // Map<num[i], count>
                }else{
                    myMap.put(num[i], 1);
                }
            }
            
            Iterator myIterator = myMap.entrySet().iterator();
            while(myIterator.hasNext()){                      //遍历Map找出count > length/2 的元素
                java.util.Map.Entry myEntry = (java.util.Map.Entry) myIterator.next();
                int count = (int) myEntry.getValue();
                int result = (int) myEntry.getKey();
                if(count > (num.length/2)) return result;
            }
            
            return -1;   //查找失败
        }
    }



  • 相关阅读:
    怎么判断一个bug到底是前端的bug还是后端的bug
    charles抓包原理
    java基础|Properties文件解析
    java基础|break、continue和return
    Java使用JSONPath解析JSON完整内容详解
    10/23/2019
    有什么好怕的
    [转]一个急刹车,过路老人吓得病发身亡 司机要担责吗?
    [转]7岁女孩练舞下腰致残,舞蹈培训机构被判赔115万
    Salesforce权限管理
  • 原文地址:https://www.cnblogs.com/dosmile/p/6444453.html
Copyright © 2011-2022 走看看