一.C
先排序,下标为 [ n / 2 ] 的元素一定是众数
int Cmp_int(const void* p1, const void* p2)
{
return *(int*)p1 - *(int*)p2;
}
int majorityElement(int* nums, int numsSize)
{
qsort(nums, numsSize, sizeof(int), Cmp_int);
return nums[numsSize / 2];
}
java
/*
s.sort(int[] a):从小到大排序
s.sort(int[] a, int fromIndex, int toIndex):对数组a的下标从fromIndex到toIndex-1的元素排序
*/
class Solution
{
public int majorityElement(int[] nums)
{
Arrays.sort(nums);
return nums[nums.length / 2];
}
}
二.随机化
class Solution
{
private int randRange(Random rand, int min, int max)
{
return rand.nextInt(max - min) + min; //生成一个范围在0~x(不包含X)内的任意正整数
}
private int countOccurences(int[] nums, int num) //数组里有几个和num相等的数字
{
int count = 0;
for (int i = 0; i &