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.

题目含义:找到一个数组中,个数超过总个数一半的那个数!!!!

注意:1、数组非空  2、这个数一定存在!!!!

package leetcode;
//这道题目是有约束的,该数组中一定存在这样的数,才能用Moore's Voting Algorithm!
//否则找出的结果不正确!!
//即要先判断是否存在,然后再找~
//Moore's Voting Algorithm:http://www.cs.utexas.edu/~moore/best-ideas/mjrty/index.html
public class MajorityElement {
    public int majorityElement(int[] nums) {
        int count = 0;
        int majorityElement = nums[0];              //先令第一个数为这个marjor
        for (int x : nums) {
            if (x == majorityElement) {
                ++count;
            } else {
                --count;
            }
            if(count == 0){
                majorityElement = x;
                count = 1;
            }

        }
        return majorityElement;
        /* Arrays.sort(nums);                                //简单方法,但是排序,时间复杂度 nlogn ;可以做
            return nums[nums.length/2];*/
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}

posted @ 2016-04-15 13:37  wangb021  阅读(87)  评论(0编辑  收藏  举报