LEETCODE-Majority Element

来源:互联网 发布:山西东华软件 编辑:程序博客网 时间:2024/06/13 00:27

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.
方法一:

#include<iostream>#include<vector>#include<algorithm>using namespace std;int majorityElement(vector<int>& nums) {        int n;        int q;        int W;        sort( nums.begin(), nums.end());        n = nums.size();        if( n == 1)        {            W = nums[0];            return W;        }        q = n / 2;        for(int i = 0; i < q + 1; i++)        {            if(nums[i] == nums[i+q])            {                W = nums[i];                return W;            }        }}int main (){    vector<int> nums;    int n;    int x;    int W;    cin >> n;    for(int i = 0; i < n; i++)    {        cin >> x;        nums.push_back(x);    }   W = majorityElement(nums);   cout << W;}

先将vector容器之内的数值进行sort排序;
产生形如AABBBCCCCCC的形式;
然后通过for循环依次扫描nums[0]到nums[n/2]并逐个使其nums[i]与他们后边的nums[i+n/2]进行比较,相等即返回;

for(int i = 0; i < q + 1; i++)        {            if(nums[i] == nums[i+q])            {                W = nums[i];                return W;            }        }

方法一其中使用了一个sort排序;导致了runtime增加
方法二:
majority element 的数量一定比其他 not majority element 的数量多;

#include<iostream>#include<vector>#include<algorithm>using namespace std;int majorityElement(vector<int>& nums) {        int sentry;        int time = 0;        for(int i = 0; i < nums.size(); i++){            if( time == 0){                sentry = nums[i];                time ++;            }            else{                if( sentry == nums[i])                    time++;                 else                    time--;            }        }        return sentry;}int main (){    vector<int> nums;    int n;    int x;    int W;    cin >> n;    for(int i = 0; i < n; i++)    {        cin >> x;        nums.push_back(x);    }   W = majorityElement(nums);   cout << W;}
0 0
原创粉丝点击