zoukankan      html  css  js  c++  java
  • 169. Majority Element Java Solutin

    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.

    Credits:
    Special thanks to @ts for adding this problem and creating all test cases.

    Subscribe to see which companies asked this question

     
     1 public class Solution {
     2     public int majorityElement(int[] nums) {
     3         if(nums == null) return 0;
     4         Map<Integer,Integer> hm = new HashMap<Integer ,Integer>();
     5         for(int i= 0;i< nums.length;i++){
     6             if(hm.containsKey(nums[i])) hm.put(nums[i],hm.get(nums[i]) + 1);
     7             else{
     8                 hm.put(nums[i],1);
     9             }
    10         }
    11         int halflen = nums.length/2;
    12         int res = 0;
    13         for(int key : hm.keySet()){
    14             if(hm.get(key) > halflen){
    15                 res = key;
    16                 break;
    17             }
    18         }
    19         return res;
    20     }
    21 }

    方法2: 排序后,取中间的元素就是所求值。

    方法3:转自:http://blog.csdn.net/feliciafay/article/details/45006661

    从头到尾扫描一遍数组,记录当前的majority element的count。

     1 // 259ms
     2 public class Solution {
     3     public int majorityElement(int[] num) {
     4         if(num.length < 3) return num[0];
     5         int majority = num[0];
     6         int count = 1;
     7         //1,1,1,1,2,1,3,1,2,2,2,2,2,2,
     8         for (int i = 1; i < num.length; ++i) {
     9             if (count == 0) {
    10                 majority = num[i];
    11                 ++count;
    12             } else if (num[i] == majority)  {
    13                 ++count;
    14             } else {
    15                 --count;
    16             }
    17         }
    18         return majority;
    19     }
    20 }
  • 相关阅读:
    Servlet常用类
    Java库使用----xstream1.3.1
    字符串处理---统计每一行字符串当中的字符“u”个数
    读写锁
    求阶乘
    Fibonacci数列
    22.2-按照升序显示不重复的单词
    22.1-在散列集上进行集合操作
    完美世界-2015校园招聘-java服务器工程师-成都站
    运用jQuery写的验证表单
  • 原文地址:https://www.cnblogs.com/guoguolan/p/5395968.html
Copyright © 2011-2022 走看看