python如何求一个众数

Python010

python如何求一个众数,第1张

给定一个长度为n的数组,返回众数。众数是指数组中出现次数超过n/2次的元素假设数组非空,众数一定存在Example 1:Input: [3,2,3]Output: 3Example 2:Input: [2,2,1,1,1,2,2]Output: 21:字典,累记数组中出现的各元素的次数,一旦发现超过n/2次的元素就返回该元素def majorityElement(self, nums):""":type nums: List[int]:rtype: int"""if len(nums)==1:return nums[0]numDic = {}for i in nums:if numDic.has_key(i):numDic[i] += 1if numDic.get(i)>=(len(nums)+1)/2:return ielse:numDic[i] = 12:利用list.count()方法判断(注意for循环中如果是访问整个nums列表会出现“超出时间限制”的错误)def majorityElement(self, nums):""":type nums: List[int]:rtype: int"""for i in nums[len(nums)//2:]:if nums.count(i)>len(nums)//2:return i3:sorted(nums)[len(nums)//2]def majorityElement(self, nums):""":type nums: List[int]:rtype: int"""return sorted(nums)[len(nums)//2]

难度:★☆☆☆☆

类型:数学

给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在众数。

示例 1:

输入: [3,2,3]

输出: 3

示例 2:

输入: [2,2,1,1,1,2,2]

输出: 2

为了找到出现次数最多的数,最简单的逻辑就是统计每次数字出现的次数,再拿取出其中出现次数最多的数字。该方法道理简单,但是内存开销较大。

这道题目所求的众数的定义与常规概念不同的是,这里众数的出现次数要比数组中其他所有元素要多的,根据这个原理,我们将结果变量(res)初始化为数组第一个数,另外准备一个统计变量(count),当这个变量遇到和结果相同的数则加一,否则减一,减为零时更换结果变量为下一个数,由于众数出现次数多于其他字符,那么数组遍历结束后统计变量一定大于零,且此时结果变量中的数即为众数。

这里众数的的出现次数超过其他元素,因此我们将数据进行排序后,最中间的数字一定是众数。

如有疑问或建议,欢迎评论区留言~

count = {}

for n in nums:

if n in count:

count[n] += 1

else:

count[n] = 1

res = 0

maxCount = 0

for k, v in count.items():

if v >maxCount:

res = k

maxCount = k

print(res)