python求众数代码_python-LeetCode-求众数

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

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

示例 1:

输入: [3,2,3]

输出: 3

示例 2:

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

输出: 2

众数——众数(Mode)是统计学名词,在统计分布上具有明显集中趋势点的数值,代表数据的一般水平(众数可以不存在或多于一个)。 修正定义:是一组数据中出现次数最多的数值,叫众数,有时众数在一组数中有好几个。用 M 表示。 理性理解:简单的说,就是一组数据中占比例最多的那个数。

(来自百度)

我的解法:利用字典,计算每一个数字出现的次数,出现次数最大的那个就是要求的众数,但是根据题目,次数还要大于列表长度的一半,所以有了下面的方法:

class Solution(object):

def majorityElement(self, nums):

"""

:type nums: List[int]

:rtype: int

"""

dict={x:0 for x in nums}

for x in nums:

dict[x]+=1

for x in dict.key():

if dict[x]>len(nums)//2:

return x

这种方法我借鉴了昨天的字典法,利用字典来计数。利用了额外字典空间,遍历列表一次,字典一次。

当然,昨天的count法也能完成,这题虽然没有明确要求,但是我们总是要利用更小的时空复杂度来完成算法。

还有一种方法,我是没想到,我发现大学上久了,那种投机取巧的本事丢了,思维有些不太灵活了,可能是不太动脑子了吧。。

这种方法利用了这样的方法,将给的列表排序,因为众数的数量超过一半,所以排序后,中间的数一定是那个众数。只能说我的脑子不行。

class Solution(object):

def majorityElement(self, nums):

"""

:type nums: List[int]

:rtype: int

"""

nums.sort()

return nums[len(nums)//2]

还有一个我刚学会的方法——摩尔投票法

我借鉴了网上的解释:摩尔投票法的基本思想很简单,在每一轮投票过程中,从数组中找出一对不同的元素,将其从数组中删除。这样不断的删除直到无法再进行投票,如果数组为空,则没有任何元素出现的次数超过该数组长度的一半。如果只存在一种元素,那么这个元素则可能为目标元素。

https://www.jianshu.com/p/c19bb428f57a

文章写的Java实现

但是我们不能真的去每次删除两个不相同的值,当然如果你要写也能写出来,这有个更好的方法:

从第一个数开始count=1,遇到相同的就加1,遇到不同的就减1,减到0就重新换个数开始计数,总能找到最多的那个。——YourBaymax

现在我们来用python来实现它:

class Solution(object):

def majorityElement(self, nums):

"""

:type nums: List[int]

:rtype: int

"""

count=0

now=None

max=len(nums)/2

for i in nums:

if count==0:

now=i

count=1

elif count>max:

return now

elif i==now:

count+=1

else:

count-=1

return now

这种方法是最快的,而且,只用了常数个空间来保存计数和待选众数。

厉害!!这种方法我看了挺久的,脑子不行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dataoutputstream.write 有时无法发送_RTK实操——CORS官方网教您如何解决RTK无法固定的问题...

测量员在日常测量工作中,非常期盼都能“固定解”,特别是是在密林、高楼下接收信号-测定位置-收工绘图,一整套流程跑完,就稳妥了。然而事与愿违,在使用过程中,有时候会遇到各种各样的复杂状况,导…

《DSP using MATLAB》示例Example7.25

今天清明放假的第二天,早晨出去吃饭时天气有些阴,十点多开始“清明时节雨纷纷”了。 母亲远在他乡看孙子,挺劳累的。父亲照顾生病的爷爷…… 我打算今天把《DSP using MATLAB》第7章结束,剩下的几个例子看不懂了,先跳过…

freemarker使用说明_SpringBoot+Swagger2集成详细说明

SpringBootSwagger2集成详细说明引言:为什么使用Swagger?在Vue没有出来之前,都是前后端在一起:后端用的SSM或者SSH框架前端完全就是静态页面模板引擎。例如:JSP开发久的人应该听说过,和现在的Thymeleaf、 V…

64位 iee754_什么是最大的非规格化和标准化数字?(64bit,IEE 754

我正在使用浮点算法,因为我很想理解这个主题!我知道这些数字可以用科学记数法表示。因此,对于这两个数字,指数应该如下所示:非规范化数: 11 .... 11所以(1 1/2 1/2 ^ 2 ... 1/2 ^ 52)* 2 ^ 1023归一化数…

Vim中根据正则对选中文本对齐(比如ini文件的=号对齐)

vimrc增加如下内容即可&#xff1a; vnoremap <M-> :call Duiqi(\v(^\s*\S)\s(.*))<CR> "reg匹配的第2段文字对齐 function! Duiqi(reg) let l0 line("<") let l1 line(">") "获取第1个单词及前面空格的最大长度 let…

mysql pid_mysql pid文件是什么用途

展开全部MySQL pid 文件记录的是当前 mysqld 进程的 pid&#xff0c;pid 亦即 Process ID。可以通过如下的例子查62616964757a686964616fe58685e5aeb931333361316634看&#xff1a;$ /etc/init.d/mysqld startStarting MySQL. SUCCESS!$ ll /data/mysql/centos.pid-rw-rw---- 1…

[bzoj1305][CQOI2009]dance跳舞

一次舞会有n个男孩和n个女孩。每首曲子开始时&#xff0c;所有男孩和女孩恰好配成n对跳交谊舞。每个男孩都不会和同一个女孩跳两首或更多舞曲。有一些男孩女孩相互喜欢&#xff0c;而其他相互不喜欢&#xff08;不会“单向喜欢”&#xff09;。每个男孩最多只愿意和k个不喜欢的…

mysql主从架构搭建_mysql主从架构搭建

背景知识&#xff1a;主从这个架构可以实现数据备份&#xff0c;数据在多个服务器上分布等等&#xff0c;当然最主要的优点是可以实现负载均衡&#xff0c;将写操作交给主节点&#xff0c;读操作交给从节点。mysql官网有很多版本&#xff0c;例如Enterprise(企业版需要付费&…

Linux快速搭建FTP服务器

FTP 是File Transfer Protocol&#xff08;文件传输协议&#xff09;的英文简称&#xff0c;而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时&#xff0c;它也是一个应用程序&#xff08;Application&#xff09;。基于不同的操作系统有不同的FTP应用程序…

mysql 连接 监控_mysql监控优化(一)连接数和缓存

一、mysql的连接数MYSQL数据库安装完成后&#xff0c;默认最大连接数是100&#xff0c;一般流量稍微大一点的论坛或网站这个连接数是远远不够的&#xff0c;连接数少的话&#xff0c;在大并发下连接数会不够用&#xff0c;会有很多线程在等待其他连接释放&#xff0c;就可能会导…

集合框架(一) ----------Map集合遍历的方法

import java.util.*; /** * Map集合遍历的方法 * author Administrator * */public class Test2 { public static void main(String[] args) { Map<String,String> mapnew HashMap<String,String>(); /*Java 提供两种不同的类型&#xff1a; * 引用类型和原始类型&…

mysql事务总结_MySQL数据库和相关事务总结

以下的文章主要向大家描述的是MySQL数据库和相关事务&#xff0c;在实际操作中有很多人都认为MySQL数据库对事务处理是不支持的&#xff0c;其实&#xff0c;只要MySQL数据库版本支持BDB或是InnoDB表类型&#xff0c;那么你的MySQL就具有事务处理的能力。这里面&#xff0c;又以…

please reinstall the mysql distribution_php安装扩展mysqli的实现步骤及报错解决办法

php安装扩展mysqli的实现步骤及报错解决办法terminal#cd php-5.3.6/ext/mysqli#/usr/local/webserver/php/bin/phpize#./configure --with-php-config/usr/local/webserver/php/bin/php-config#make#make instal报错&#xff1a;checking for MySQLi support... yeschecking wh…

day35-hibernate映射 03-Hibernate持久态对象自动更新数据库

持久态对象一个非常重要的能力:自动更新数据库。 package cn.itcast.hibernate3.demo1;import static org.junit.Assert.*;import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test;import cn.itcast.utils.HibernateUtils;/*** Hibernate的测…

mysql视图中调用函数写法_从视图中调用函数

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":5,"count":5}]},"card":[{"des":"阿里云函数计算(Function Compute)是一个事件…

微信 小程序 常见错误

VM148:2 pages/aaa/aaa.jsonExpecting STRING,NUMBER,NULL,TRUE,FALSE,{,[, got EOF 意思是 子组件的 json 文件不能为空 至少填一个{} appservice:18 pages/home/home 出现脚本错误或者未正确调用 Page() 原因是没有在相应页面的.js文件中调用Page&#xff08;&#xff09;&am…

mysql 角色管理_MySQL 8 用户和角色管理入门

MySQL 8.0 正式版目前已发布&#xff0c;MySQL 8.0 增加了很多新的功能&#xff0c;具体可参考「MySQL 8.0 正式版 8.0.11 发布&#xff01;」一文。MySQL 8.0 在用户管理方面增加了角色管理&#xff0c;默认的密码加密方式也做了调整&#xff0c;由之前的 SHA1 改为了 SHA2。同…

go 删除 文件 某行_Go实战--用echo嵌入静态资源

生命不止&#xff0c;继续 go go go !!!使用 Go 开发应用的时候&#xff0c;有时会遇到需要读取静态资源的情况。比如开发 Web 应用&#xff0c;程序需要加载模板文件生成输出的 HTML。在程序部署的时候&#xff0c;除了发布应用可执行文件外&#xff0c;还需要发布依赖的静态资…

python 运维自动化之路 Day2

学习内容&#xff1a; 1、模块初识 2、Pyc是什么 3、Python数据类型 4、数据运算 5、bytes数据类型 6、列表和元组的使用 7、字符串常用操作 8、字典的使用 1、模块初识 如果用 python 解释器来编程&#xff0c;从 Python 解释器退出再进入&#xff0c;那么你定义的所有的方法和…

mysql多源复制 知乎_MySQL多主一从(多源复制)同步配置

&#xfeff;>多主一从&#xff0c;也称为多源复制&#xff0c;数据流向。这是小编的服务器部署的一次小尝试&#xff0c;实际工作中还没遇到过形式主库1 -> 从库s主库2 -> 从库s主库n -> 从库s应用场景数据汇总&#xff0c;可将多个主数据库同步汇总到一个从数据库…