leetcode 169 多数元素

news2024/9/21 13:41:41

正文

在这里插入图片描述
本题较为简单,但是有一些比较有趣的方法,这里特来记录一下。

普通方法

遍历整个数组,使用 count 进行统计,然后选择出现次数大于 len(nums) / 2 的元素。

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        for i in nums:
            if nums.count(i) > len(nums) / 2:
                return i

但是很不幸,上面的方法超时了,数据多的时候时间上超过了网站给出的限制,很难受。

摩尔投票法

首先,我们需要注意,众数的元素个数大于列表整体元素数量的一半。因此,我们可以进行循环,遇到一个数我们就对它进行投票,然后接着遇到下一个数字,如果数字一致,就继续投票,如果不一致,票数 -1。最后就获取到了众数。

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        votes = 0
        for num in nums:
            if votes == 0: x = num
            votes += 1 if num == x else -1
        return x

如果列表中有除了众数以外的多个数据也无关紧要,非众数数据之间也会因为上面的操作互相减分抵消,从而增加众数的票数,最极端的情况是数组中只有众数和另外一个数据,但是众数依然会获得更多的票数。

排序法

众数排序之后,列表中间的数字即为众数

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        nums = sorted(nums)
        return nums[int(len(nums) / 2)]

int(len(nums) / 2) 是为了防止,列表中的元素个数为奇数。

字典法(哈希)

我们也可以使用字典来处理,遇到数字,添加进入字典,最后比较 values 值,最大的即为众数。

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        dict1 = collections.defaultdict(int)
        for num in nums:
            dict1[num] += 1
        
        return max(dict1, key=dict1.get)

使用上述代码我们也可以完成相同的操作。

如果大家觉得有用,就请点个赞吧~

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

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

相关文章

工业相机测长仪的组成部分

关键字:工业相机测长仪,高精度测长仪,视觉测量系统,蓝鹏测控测长仪,工业测长仪, 本文介绍了蓝鹏测控公司机器视觉业务 测长仪的核心产品及技术特点,主要涵盖相机部分、相机防护系统、补光系统和软件部分。 (一)相机部分 我司的机器视觉业务…

双轴测径仪的四种样式!

双轴测径仪主要是用于外径及椭圆度的检测,适用于线缆电缆、橡胶塑料、金属、纸管等各种材质的线棒管材的外径及椭圆度尺寸检测。 双轴测径仪是由两个单测头垂直布置组合而成,目前根据用户的不同需求,为双轴测径仪设计了四种外观样式。 45角…

【开端】从黑神话。悟空看国产游戏技术能否引领全球

国产游戏技术能否引领全球? 近年来,国产游戏行业蓬勃发展,技术水平不断提升,多款作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,中国游戏开发者在各个领域都取得了显著进步。面对…

博主自用智能猫砂盆分享!CEWEY、空气萝卜、糯雪三款区别到底在哪里

不得不说,智能猫砂盆真的是我们这些经常外出的养猫人必备的一个智能产品了,自动铲屎的功能可以让我完全不用担心猫砂盆里会堆积猫便便,然后发臭生虫。有智能猫砂盆在,这些都不是问题,但是想要买一款合适的智能猫砂盆也…

sql-labs36-40通关攻略

第36关 一.判断闭合点 http://127.0.0.1/Less-36/?id1%df%20--http://127.0.0.1/Less-36/?id1%df%20-- 二.查询数据库 http://127.0.0.1/Less-36/?id-1%df%27%20union%20select%201,database(),3--http://127.0.0.1/Less-36/?id-1%df%27%20union%20select%201,database…

vue中使用vue-video-player插件播放视频 以及 audio播放音频

一、使用vue-video-player插件播放视频 安装 npm install vue-video-player --save 在main.js中引用 //引入视频播放插件 // main.js import VueVideoPlayer from vue-video-player import video.js/dist/video-js.css import vue-video-player/src/custom-theme.cssVue.use(V…

web3js连接测试网并完成交易

ps:有个需求是要等待确认交易。写这篇之后,我发现直接用回调函数要等好久好久好久。找到解决方案在这个链接但是有点麻烦。我已经弃用web3,直接使用ethersjs配合infura了,贼快。 本文将介绍如何使用web3js在Sepolia测试网完成一次…

应用案例|亚克力板CNC加工自动化上下料

在现代化制造领域,自动化和智能化已成为提升生产效率、降低成本的关键。针对当前CNC加工过程中亚克力板上下料环节的人工操作问题,富唯智能提出了基于AMR(自主移动机器人)的复合机器人解决方案。传统的人工取料、放置以及加工完成…

PSINS工具箱函数介绍——gpssimu

关于工具箱 gpssimu是生成GPS的位置和速度信息的函数,在psins240101\base\base1目录下 本文所述的代码需要基于PSINS工具箱,工具箱的讲解: PSINS初学指导:https://blog.csdn.net/callmeup/article/details/137087932 gpssimu是…

【ubuntu24.04】AX210/MT9621/USB网络共享访问无线网络

发现华硕的路由器访问网络经常有问题,比如clash 经常不能正常工作。 即使内网丢包严重? 期望能给台式机增加一个无线网卡访问外网。 我的五代网卡U12, 无法使用wap2企业版的无线网络:【ubuntu24.04】腾达U12 8812au无线网卡成功安装 普通的是没问题的。 对比了一些网卡,wifi…

认知杂谈37

今天分享 有人说的一段争议性的话 I 《别让焦虑困住自己》 嘿,朋友!这大热天的,实在是热得让人心里发慌。 I 咱可别再给自己找不痛快啦,赶紧找个舒服的地儿坐下,泡上一杯茶,好好唠唠嗑,给咱的心…

如何克服编程学习中的挫折感:哲学与心理学的启示

在编程学习的道路上,挫折感几乎是每个人都会遇到的障碍。无论是新手还是资深开发者,都会在面对难题时感到沮丧、焦虑甚至是无助。然而,挫折不仅是挑战,更是成长的机会。在这篇博客中,我们将结合哲学与心理学的智慧&…

2024年8月27日(dockerfile应用,创建私有仓库,在企业中分享项目)

一、dockerfile应用 [rootdocker ~]# mkdir http0 [rootdocker ~]# cd http0/ [rootdocker http0]# vim abc.sh [rootdocker http0]# ls abc.sh [rootdocker http0]# vim abc.sh #!/bin/bashrm -rf /run/*httpd*exec /sbin/httpd -D FOREGROUND [rootdocker http0]# echo "…

【大模型理论篇】通用大模型架构分类及技术统一化

1. 背景 国内的 “百模大战” 以及开源大模型的各类评测榜单令人眼花缭乱,极易让人陷入迷茫。面对如此众多的大模型,我们该如何审视和选择呢?本文将从大模型架构的角度,对常见的开源大模型架构进行汇总与分析。资料来源于公开…

创建vue组件时高度为100vh时出现纵向滚动条

<style scoped>.loginBox{padding: 0;width: 100%;min-height: 100vh;background: #c3c4c5;} </style> 原因body自带margin属性 解决方法 在index.html中添加 margin: 0;padding: 0;属性

Spring核心概念复习IOC与DI

Spring IOC概念 控制反转&#xff08;Inversion of Control&#xff09;&#xff1a;这是一种设计原则&#xff0c;用于降低代码之间的耦合度。在传统的编程模式中&#xff0c;对象之间的依赖关系是由对象自身创建和维护的。而在控制反转模式下&#xff0c;对象的创建和依赖关系…

华为eNSP:静态路由配置、浮动路由配置

静态路由&#xff1a; 一、拓扑图 二、路由器配置 2.1&#xff1a;配置接口 R1&#xff1a; [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 192.168.1.254 24 [r1-GigabitEthernet0/0/0]qu [r1]int g0/0/1 [r1-GigabitEthernet0/0/1]ip add 10.1.1.1 24 [r1-GigabitEth…

汽车功能安全--TC3xx LBIST触发时机讨论

目录 1. LBIST架构 2. LBIST寄存器配置 3. LBIST触发时机 LBIST&#xff0c;全称Logic Built-in Self Test。 在TC3xx中&#xff0c;LBIST是一种硬件功能安全机制&#xff0c;目的是为了探测MCU内部逻辑电路的潜伏故障(latent faults)。 从使用者角度来看&#xff0c;只需…

celery笔记1

2 Celery介绍 2.1 Celery是什么 # 1 celery 是一个灵活且可靠的&#xff0c;处理大量消息的分布式系统&#xff0c;可以在多个节点之间处理某个任务-现在干一堆活&#xff0c;如果一个人&#xff0c;需要一件件来做-招了几个人&#xff0c;分别安排不同人干活-并发效果--》同…

如何评估超低排放除尘器的长期运行成本和维护成本?

评估超低排放除尘器的长期运行成本和维护成本涉及多个方面&#xff0c;朗观视觉小编认为&#xff0c;以下是一些关键因素&#xff1a; 初始投资成本&#xff1a;首先考虑设备的购买成本&#xff0c;包括除尘器本身及其所有必要的配件和安装费用。 能源消耗&#xff1a;评估除尘…