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.


public class Solution {
    public int majorityElement(int[] num) {
        // assuming the num is not null and empty.
        
        int most = num[0];
        int counter = 1;
        
        for(int i=1; i<num.length; i++) {
            if(num[i] == most) {
                ++counter;
            } else {
                if(counter==0) {
                    most = num[i];
                    ++counter;
                } else {
                    --counter;
                }
            }
        }
        return most;
    }
}


posted on 2017-08-07 14:51  lxjshuju  阅读(94)  评论(0编辑  收藏  举报