Majority Element:主元素

来源:互联网 发布:上瘾网络剧见面会 编辑:程序博客网 时间:2024/04/29 10:21

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.



求主元素:包含n个元素的数组中,如果一个元素的出现次数大于n/2(向下取整)次,则该元素为主元素。

根据定义,则每两个数中必有一个是主元素,设定一个变量cnt=0,当两个数相同时,cnt++,不同时,cnt--。用变量
majority来记录主元素,每当cnt=0时,把当前元素赋给majority,成为候选的主元素,这样一来,最后的majority的值一定就是主元素。


代码如下:
class Solution {public:int majorityElement(vector<int> &num) {    int majority;    int cnt = 0;    for(int i=0; i<num.size(); i++){        if ( cnt ==0 ){            majority = num[i];            cnt++;        }else{            majority == num[i] ? cnt++ : cnt --;            if (cnt > num.size()/2) return majority;        }    }    return majority;}};














1 0
原创粉丝点击