LeetCode 169. 求众数(Majority Element)
问题描述:
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例:
C语言实现:
我们很容易想到一种思路:对nums进行排序,排序完的数组nums[len(nums)/2]一定是众数。
这种方法简单直接,算法的复杂度是O(nlogn)。在此不提供代码了,大家可以自己写写。我们这里说一说另一种方法。
首先定义一个变量cur保存出现次数最多的那个数,我们假设数组第一个数是出现次数最多的,且将其计数为1。然后从数组的第二个数开始,如果它和cur相等,那么计数加1,如果不等计数减一,如果计数等于0的时候,说明到目前为止不等于cur的数和等于cur的数数量一样多。那么这个时候cur可能就不是众数,我们要从新开始,按照前面的方法,选择下一个数作为cur,并计数1。如此这般,最后cur保存的就是我们要找的众数。
代码如下:
注意第6行,不会发生数组越界的问题,因为按照题目,众数一定是存在的,所以这里不会越界。
第9行做了一个优化,针对于众数集中出现在数组左边的情况。
python语言的实现:
python推荐用第一种思路来解题,有两个好处:第一,代码简洁,只要一行;第二,sorted和len函数都是内置函数,是C语言实现的,通常效率要比纯python的高的多。
Java语言的实现:
Java的实现和C语言的实现相同。
代码如下:
D 4 R, dopamine D 4 receptor; K D, dissociation constant; K i, inhibition constant; P, pseudo probability density function
with a BFN to boot
Histology of the reproductive tract demonstrated follicular depletion and hemorrhage formation in the ovaries and diminution of uterine weight 10, 11 Stein can design a care regimen that suits your skin type and helps control acne outbreaks
Blanco C, Diaz Perales A, Collada C, et al
Re What do you think of deca, eq, dbol stack