题目描述:
Given an array of integers and a number k, the majority number is the number that occurs more than 1/k
of the size of the array.
Find it.
Notice
There is only one majority number in the array.
Example
Given [3,1,2,3,2,3,3,4,4,4]
and k=3
, return 3
.
题目思路:
还是和#46一样的做法。。
Mycode(AC = 17ms):
class Solution {
public:
/**
* @param nums: A list of integers
* @param k: As described
* @return: The majority number
*/
int majorityNumber(vector<int> nums, int k) {
// write your code here
if (nums.size() == 0) return 0;
// use map to record the number of times that
// nums[i] appears
map<int, int> helper;
for (int i = 0; i < nums.size(); i++) {
if (helper.find(nums[i]) != helper.end()) {
helper[nums[i]]++;
if (helper[nums[i]] > nums.size() / k) {
return nums[i];
}
}
else {
helper[nums[i]] = 1;
}
}
for (auto it = helper.begin(); it != helper.end(); it++) {
if (it->second > nums.size() / k) {
return it->first;
}
}
return 0;
}
};