描述:
给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k。
注意事项
数组中只有唯一的主元素
给出数组 [3,1,2,3,2,3,3,4,4,4] ,和 k = 3,返回 3
思路:
用哈希的方法建立一一对应,即对于给出的数组中的数m及其个数n,有a[m+500000]=n;(m+500000)是防止m为负数越界)
这道题我用空间换了时间;开辟数组较大浪费空间;
AC代码:
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
int n=nums.size();
int i;
int a[999999];
for(i=0;i<n;i++)
{
a[nums[i]+500000]+=1;
if(a[nums[i]+500000]>n/k)
return nums[i];
}
return 0;
}
};