三道题感觉是一个题
给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k。
样例
给出数组 [3,1,2,3,2,3,3,4,4,4] ,和 k = 3,返回 3
方法比较简单,首先将数组排序,然后挨个进行遍历,如果重复那么count计数加1,如果count大于数组长度的1/k返回:
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
sort(nums.begin(),nums.end());
if (nums.size() == 1) return nums[0];
int i = 1,count = 1;
while (i < nums.size()) {
if (nums[i] == nums[i-1]) {
count++;
if (count > nums.size()/k) return nums[i];
}
else count = 1;
i++;
}
}
};
网友评论