47 Majority Element II

原题网址; https://www.lintcode.com/problem/majority-element-ii/

描述

给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一。

数组中只有唯一的主元素

您在真实的面试中是否遇到过这个题?  

样例

给出数组[1,2,1,2,1,3,3] 返回 1

挑战

要求时间复杂度为O(n),空间复杂度为O(1)。

查看标签

枚举法

贪心
 
思路:利用map,建立nums【i】与数量count 的映射,最后返回 count 大于元素个数三分之一的nums【i】。
 
AC代码:
class Solution {
public:
    /*
     * @param nums: a list of integers
     * @return: The majority number that occurs more than 1/3
     */
    int majorityNumber(vector<int> &nums) {
        // write your code here
        int n=nums.size();
    map<int,int> m;
    for (int i=0;i<n;i++)
    {
        m.insert(pair<int,int>(nums[i],0));
    }
    for (int i=0;i<n;i++)
    {
        m[nums[i]]++;
    }
    for (int i=0;i<n;i++)
    {
        if (m[nums[i]]>n/3)
        {
            return nums[i];
        }
    }
    }
};
 
 

猜你喜欢

转载自www.cnblogs.com/Tang-tangt/p/9089697.html