LeetCode——剑指 Offer 39. 数组中出现次数超过一半的数字

2023-11-10

剑指 Offer 39. 数组中出现次数超过一半的数字

题目

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

 

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

 

示例 1:

输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解思路

1>源代码

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

2>算法介绍

​本题的最佳解法是利用摩尔投票法,其核心思路是,假设将众数的票数定为1,非众数的票数定为-1,那么整个数组所有的票数和应该>0.

如果对于数组的前k个数来说,他们的票数和为0,那么意味着后面的n-k个数的票数和仍然应该>0,也就是说后面n-k个数的众数不变。

于是我们构造如上代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode——剑指 Offer 39. 数组中出现次数超过一半的数字 的相关文章

随机推荐

  • 为什么mybatisplus这么好用,反而用的不多?

    对会用的人来说 mybatis plus的wrapper非常好用 不再需要去关注dao层了 但是这需要一定的学习成本 而且不太符合经典的三层架构思维 对一些老前辈来说完全是违反常识的 很别扭 对他们来说 dao层还是拿在自己手里更踏实 给第
  • 【区块链与密码学】第6-9讲:数字签名算法的可证明安全性

    本课堂内容全部选编自PlatON首席密码学家 武汉大学国家网络安全学院教授 博士生导师何德彪教授的 区块链与密码学 授课讲义 教材及互联网 版权归属其原作者所有 如有侵权请立即与我们联系 我们将及时处理 6 9数字签名算法的可证明安全性 可
  • ResNet详解:ResNet到底在解决什么问题?

    原作者开源代码 https github com KaimingHe deep residual networks 论文 https arxiv org pdf 1512 03385 pdf 1 网络退化问题 在ResNet诞生之前 Ale
  • 2021-11-18 迈向程序猿的第三十一步

    目录 一 工具类的封装 二 ORM 三 Dao层的抽取 四 DateUtils 五 Service业务层 一 工具类的封装 问题 每次进行CRUD操作 都要写一套JDBC 很繁琐 解决方案 将重复的操作 抽取到工具类中封装 1 加载驱动只需
  • ctf.show_web10

  • 线程安全(现象、原理、解决、死锁)

    线程安全 线程不安全现象 黄牛抢票程序 直接上代码 创建了4个线程分别表示4个抢票的 我们知道抢票 肯定是一人一票 不可能存在两个人买的是同一张票 接下来的代码的结果就是线程不安全的现象 include
  • vue mapbox设备撒点鼠标悬浮变成可点击状以及渲染3D建筑

    这里跳过如何使用mapbox 直接上代码 地图撒点鼠标悬浮变成可点击状态 map on mouseenter device point gt map getCanvas style cursor pointer map on mousele
  • C语言 打地鼠游戏 超级详解,各个函数与算法,设计思路与流程

    基于easyx的打地鼠游戏 C 版本请点击此链接 一 游戏简介 游戏简介 疯狂打地鼠 是一款经典的单机休闲益智类小游戏 调皮的小地鼠们又出来活动了 你需要做的就是将他们砸回洞中去 机械风 复古风的游戏画面 不一样的体验 趣味性十足 眼手并用
  • Intel SGX技术详细解释(非常棒)

    http www jos org cn html 2018 9 5594 htm b18 随着信息技术的迅速发展与广泛应用 人类社会已经进入了一个崭新的互联网时代 一方面 人们享受着互联网科技带来的便利 另一方面 由网络和信息系统构成的网络
  • Flink Dashboard的数据监控功能

    一 数据反压 1 1 数据反压是啥 数据反压是在实时数据处理中 数据处理流的某个节点上游产生数据的速度大于该节点处理数据速度 导致数据堆积 从该节点向上游传递 一直到数据源 并降低数据源的摄入速度 导致数据反压出现的常见场景 比如 GC导致
  • Goland The selected directory is not a valid home for Go Sdk

    1 前言 初学 Golang 今天在配置好 Golang SDK 后 安装 goland IED 编辑器 在配置 goland GOROOT SDK 的过程中 一直报错如下 The selected directory is not a v
  • 什么是边缘计算(Edge AI)?

    什么是边缘计算 Edge AI 道翰天琼认知智能机器人平台API接口大脑为您揭秘 边缘AI发源于边缘计算 边缘计算也称为边缘处理 是一种将服务器放置在本地设备附近网络技术 这有助于降低系统的处理负载 解决数据传输的延迟问题 这样的处理是在传
  • KeyError: 'Spider not found: xxxx'

    保证确实由有Spider的情况下 可以查看你的scrapy cfg文件是否丢失
  • android studio 设置model设置为library

    如图所示 我的项目里面是两个model 我现在把第二个flowlayout设置为library来用 在App中引用flowlayout 为了防止今后忘记 特此标注一下 首先第一步 找到我们要做library的model的build文件 我这
  • element步骤条增加锚点的实现

    element的步骤条默认样式是无法点击的 需求中有点击步骤条 页面滚动到特定锚点需求 实现如下
  • 【云原生之Docker实战】使用Docker部署PhotoPrism照片管理系统

    云原生之Docker实战 使用Docker部署PhotoPrism照片管理系统 一 PhotoPrism介绍 1 PhotoPrism简介 2 PhotoPrism特点 二 检查宿主机系统版本 三 检查本地docker环境 1 检查dock
  • jumpserver堡垒机 (资源)

    23 5 jumpserver介绍 官网www jumpserver org 跳板机概述 跳板机就是一台服务器 开发戒运维人员在维护过程中首先要统一登录到这台服务器 然后再登录到目标 设备迚行维护和操作 堡垒机概述 堡垒机 即在一个特定的网
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552

    Springboot高校宿舍交电费系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化 电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用 信息时代的到来已成为不可阻挡的时尚潮流 人类发展的历史正进入一个新时代
  • 关于Python爬虫Scrapy在高并发下DNS查找失败解决方案

    使用场景 检测80w URL 可否打开 配置 高端配置 20 进程 500 CONCURRENT REQUESTS 运行一段时间后会有DNSLookup什么的错误 也就是查找超时 但是在浏览器里可以打开这个网页 首先做一些可能的无用功 爬虫
  • LeetCode——剑指 Offer 39. 数组中出现次数超过一半的数字

    剑指 Offer 39 数组中出现次数超过一半的数字 题目 数组中有一个数字出现的次数超过数组长度的一半 请找出这个数字 你可以假设数组是非空的 并且给定的数组总是存在多数元素 示例 1 输入 1 2 3 2 2 2 5 4 2 输出 2