博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode--169--求众数
阅读量:5241 次
发布时间:2019-06-14

本文共 2110 字,大约阅读时间需要 7 分钟。

问题描述:

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

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

示例 1:

输入: [3,2,3]输出: 3

示例 2:

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

原来是读题读错了。。。

方法1:

1 class Solution(object): 2     def majorityElement(self, nums): 3         """ 4         :type nums: List[int] 5         :rtype: int 6         """ 7         nums.sort() 8         wid = len(nums) // 2  9         i = 010         n_count = 011         dicts = {}12         while i < len(nums):   13             temp = nums[i]14             n_count = nums.count(temp)15             dicts[temp] = n_count16             i += n_count17         maxnum = -118         for key in dicts:19             if dicts[key] >= maxnum:20                 maxkey = key21                 maxnum = dicts[maxkey]22         return maxkey

改进一:

1 class Solution(object): 2     def majorityElement(self, nums): 3         """ 4         :type nums: List[int] 5         :rtype: int 6         """ 7         res={} 8         for one in nums: 9             if one in res:10                 res[one]+=111             else:12                 res[one]=113 14         return max(res,key=res.get)     #字典中值最大的键

改进二:

1 class Solution(object): 2     def majorityElement(self, nums): 3         """ 4         :type nums: List[int] 5         :rtype: int 6         """ 7         nums.sort() 8         wid = len(nums) // 2  9         i = 010         n_count = 011         while i < len(nums):   12             n_count = nums.count(nums[i])13             if n_count > wid :14                 return nums[i]15             i += n_count

官方:

1 class Solution(object):2     def majorityElement(self, nums):3         """4         :type nums: List[int]5         :rtype: int6         """7         nums.sort()8         return nums[len(nums)/2]

官方二:

1 class Solution(object): 2     def majorityElement(self, nums): 3         """ 4         :type nums: List[int] 5         :rtype: int 6         """ 7         res=set(nums) 8         n=len(nums)/2 9         for item in res:10             if(nums.count(item)>n):11                 return item

2018-09-14 21:50:56

转载于:https://www.cnblogs.com/NPC-assange/p/9649172.html

你可能感兴趣的文章
控件生命周期
查看>>
nose进行python自动化测试
查看>>
工厂模式
查看>>
广东麻将的规则
查看>>
Linux strace 命令 说明
查看>>
JWT【JSON Web Token】 简述
查看>>
查看并解除Oracle锁
查看>>
WCF中ServiceContract,DataContract与MessageContract对比
查看>>
Simple statements, blocks, Write, WriteLine and the format string.
查看>>
记录一下mvc发布
查看>>
c++ 文件共享打开
查看>>
修饰模式(Decorator Pattern)
查看>>
编程题-年终奖
查看>>
centos下的hadoop服务器的配置
查看>>
工具的分离与联系
查看>>
python爬虫学习之使用XPath解析开奖网站
查看>>
[转载] 山楂树之恋——封面及说明
查看>>
npm
查看>>
菜单布局记录篇
查看>>
基于fiddler来模拟限速
查看>>