50题 第38天 求众数
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。链接: 力扣.我的代码如下:
class Solution {
public int
majorityElement(int
[] nums
) {
Map
<Integer
,Integer
> map
= new HashMap<Integer
,Integer
>();
int n
= nums
.length
;
for(int num
: nums
)
{
Integer count
= map
.get(num
);
if(count
== null)
count
=1;
else
count
++;
map
.put(num
,count
);
if(map
.get(num
) > n
/2)
return num
; }
return 0;
}
}
运行结果
考虑到数与出现次数存在的映射关系,采用哈希表来做。感觉并不是很难实现,通过一次次的刷新迭代。注意把判断大于二分之n放在循环里面,因为只能有一个数满足众数的条件。