题目:majorityNumber
要求:
给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k
样例:
给出数组 [3,1,2,3,2,3,3,4,4,4] ,和 k = 3,返回 3
算法要求:
要求时间复杂度为O(n),空间复杂度为O(k)
解题思路:
渣渣的我,没有想出来这个算法,只能用map啦~~~
算法如下:
int majorityNumber(vector<int> nums, int k) {
int size = nums.size();
map<int, int> m;
for (int i = 0; i < size; i++) {
m[nums[i]]++;
if (m[nums[i]] > size / k) {
return nums[i];
}
}
return -1;
}