给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k。
样例
给出数组 [3,1,2,3,2,3,3,4,4,4] ,和 k = 3,返回 3
挑战
要求时间复杂度为O(n),空间复杂度为O(k)
解题思路:
看到次数相关就用哈希表。
class Solution {
public:
/**
* @param nums: A list of integers
* @param k: An integer
* @return: The majority number
*/
int majorityNumber(vector<int> &nums, int k)
{
// write your code here
unordered_map<int,int> m;
int length = nums.size();
for(int i : nums)
{
m[i]++;
if(m[i] > (length/k))
return i;
}
}
};