码迷,mamicode.com
首页 > 其他好文 > 详细

Majority Element

时间:2015-07-14 07:32:48      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:

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];
    }
}

 

Majority Element

标签:

原文地址:http://www.cnblogs.com/midan/p/4644423.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!