【leetcode】Majority Element

来源:互联网 发布:在线网络理财产品排名 编辑:程序博客网 时间:2024/05/01 03:05

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.
本思路就是对比两个数据,如果两个数据不一致的话,就都删掉;由于major的数据会超过 ⌊ n/2 ⌋ ,因此,剩下的那个数据就是所求的

class Solution {public:    int majorityElement(vector<int> &num) {        int size=num.size();        int count=0,answer=0;        for (int i=0;i<size;i++)        {            if(count==0)            {                answer=num[i];                count++;            }            else            {                if(num[i]==answer) count++;                else count--;            }        }        return answer;    }};

网上的另外的一个方法,就是随机挑选一个元素,记其出现的次数,如果小于n/2就删掉,再比较下一个。这种方法的运算复杂度较低。

class Solution {public:    int majorityElement(vector<int> &num) {        int count = 0;        for(;;) {            if(num.size() == 1)                return num[0];            else    {                int i = rand() % (num.size() - 1);                for(int j = 0; j < num.size(); j++) {                    if(num[j] == num[i])                        count++;                }                if(count > (num.size() / 2))                    return num[i];                else    {                    count = 0;                    continue;                }            }        }    }  };
0 0
原创粉丝点击