说是求众数,我写着写着变成就数组中出现次数最多的数了,感觉有点不符合题意。提交通过之后,看了看别人写的之后,他们的才是求众数。
---------------------------------------------------------------------------------------------------
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋
的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例 1:
输入: [3,2,3] 输出: 3
示例 2:
输入: [2,2,1,1,1,2,2] 输出: 2
-----------------------------------------------------------------
自己写的求最多次出现的数
class Solution {
public int majorityElement(int[] nums) {
if(nums.length==1) {
return nums[0];
}
int count=0;
int max=0;
int fill=0;
Arrays.sort(nums);
for(int i=0;i<nums.length-1;i++) {
if(nums[i]==nums[i+1]) {
count++;
}else {
count=0;
}
if(count>max) {
max=count;
fill=nums[i];
}
}
return fill;
}
}
-------------------------------------------------
别人写的求众数
class Solution {
public int majorityElement(int[] nums) {
int count = 0;
int candidate = 0;
for(int i = 0; i < nums.length; ++i){
if(count == 0){
candidate = nums[i];
}
if(candidate == nums[i])
++count;
else
--count;
}
return candidate;
}
}