zoukankan      html  css  js  c++  java
  • Majority Element

    Question:

    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.

    Thoughts:

    This question is a perfect fit for Moore's Voting algorithms. The basic ideas is , 

    1. set a majorityIndex variable to locate the candidate most appeared element.

    2. set a counter to count the occurrences of the majority element (Note: the key point here is to plus one every time the "candidate" majority element appear and minus one every time other element execpet the candidate element appear. The point is that as long as there's a majority element more than 50 percent of the array, we can ensure that the final count is above Zero)

    Solution:

    public class Solution {
        public int majorityElement(int[] nums) {
            if (nums.length == 1) return nums[0];
            int majorIndex = 0;
            int count = 1;
            for(int i = 1 ; i< nums.length; i++) {
                if(nums[i]==nums[majorIndex]) count ++; 
     //compare element with the current candidate majority element
                else count --;
                if(count == 0) {
                    majorIndex = i;// switch candidate
                    count =1 ;
                }
            }
            return nums[majorIndex];
        }
    }
  • 相关阅读:
    勘测定界三调版发布
    混沌加密解密,附带完整C#源码
    c# 获取照片的经纬度和时间
    第8章代码
    使用Python读取照片的GPS信息
    6章代码
    python运行时间的两种方法
    5章代码
    在 ArcGIS 中使用的查询表达式的 SQL 参考
    15章代码
  • 原文地址:https://www.cnblogs.com/midan/p/4644423.html
Copyright © 2011-2022 走看看