给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋
的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。
一:解法一(暴力法)
暴力算法遍历整个数组,然后用另一重循环统计每个数字出现的次数。将出现次数比其他数字加起来出现次数还多的元素返回。
class Solution {
public int majorityElement(int[] nums) {
int majorityCount = nums.length/2;
for (int num : nums) {
int count = 0;
for (int elem : nums) {
if (elem == num) {
count += 1;
}
}
if (count > majorityCount) {
return num;
}
}
return -1;
}
}
return 0和return 1和return -1的区别见:https://blog.youkuaiyun.com/robotkang/article/details/80659244
二:排序法
排序完后无论众数是多少,都会经过n/2这个地方,只要返回这个位置的元素,其必然是众数
import java.util.Arrays;
class Solution {
public int majorityElement(int[] nums) {
Arrays.sort(nums);
return nums[nums.length/2];
}
}