LeetCode:169. Majority Element

来源:互联网 发布:数据库事务是什么意思 编辑:程序博客网 时间:2024/06/06 10:02

代码:


public class Solution {

    public int majorityElement(int[] num) {


        int major=num[0], count = 1;
        for(int i=1; i<num.length;i++){
            if(count==0){
                count++;
                major=num[i];
            }else if(major==num[i]){
                count++;
            }else count--;
            
        }
        return major;

    }


思路:

如果一个数组,里面存在一个元素,这个元素的个数比数组的总个数的一半要大的话,单从元素数量的角度来看,可以看做是把主元素分别插入到其他元素之间,剩余的主元素放在最后。

上述的代码就是这种原理,一次遍历过后,能使count为正整数的数字必然是主元素,因为主元素对count增加的次数与其余元素对count减少的次数能相互抵消,剩余的主元素能使count为正数,因此这种方法可以找到主元素。

原创粉丝点击