首页 > 其他分享 >用 Go 剑指 Offer 39. 数组中出现次数超过一半的数字 (摩尔投票)

用 Go 剑指 Offer 39. 数组中出现次数超过一半的数字 (摩尔投票)

时间:2023-04-10 14:37:02浏览次数:34  
标签:39 shu nums Offer votes 摩尔 数组 众数 Go

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

 

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

 // 若不存在多数元素,本题就需要计数并判断

示例 1:

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

限制:

1 <= 数组长度 <= 50000

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

 

摩尔投票法:

// 非众数 与 众数 相抵之后 剩下的一定为众数

func majorityElement(nums []int) int {
    votes := 0
    x := nums[0]
    for i := 0;i < len(nums); i++ {
        if nums[i] == x {
            votes++
        } else {
            votes--
        }
        if votes == 0 {
            x = nums[i + 1]
        }
    }

    return x
}

 本题还可以使用 哈希表 或 排序法解题

标签:39,shu,nums,Offer,votes,摩尔,数组,众数,Go
From: https://www.cnblogs.com/slowlydance2me/p/17302811.html

相关文章

  • Pycharm中安装了pandas模块,但在引入该模块时提示No module named 'pandas'
    之前遇到一个问题,先放上问题截图  pandas模块是安装在site-packages目录下的一个文件,但是引用时可以看到有红色的波浪线提示没有该模块,我们可以这样试试将projectstructure添加site-packages目录,步骤:(1)选择File—>settings—>project:pythonWork—>projectstructure  ......
  • mac配置vscode和go
    一安装和配置Go去这里下载Go的安装包:https://studygolang.com/dl建议下载pkg格式,懒人安装安装完毕后用goversion验证一下是否安装成功然后使用goenv查看一下go相关的环境变量主要是查看GOROOT,GOPATH,GOBINGOPATH:GO的工作目录,这个默认是~/goGOROOT:GO的安装目......
  • ChatGPT垂直行业私有数据知识库功能-咨询接口采用流式响应输出-JS和Golang实现流式响
    近期开发私有数据知识库功能,想要实现和ChatGPT聊天效果类似的逐字流式输出展示效果。GPT3.5本身就有流式聊天补全接口,后端Golang对接后,也需要能流式输出。下面就介绍下前端JS后端Golang来实现这种输出效果 大部分介绍是使用EventStream来实现,我现在不使用EventStream也来实现......
  • 用 Go 剑指 Offer 42. 连续子数组的最大和
    输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释: 连续子数组 [4,-1,2,1]的和最大,为 6。 提示:1<= arr.length<=10^5-100<=arr[i]<=100......
  • 用 Go 剑指 Offer 40. 最小的k个数 (Top K 问题)
    输入整数数组arr,找出其中最小的k个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例1:输入:arr=[3,2,1],k=2输出:[1,2]或者[2,1]示例2:输入:arr=[0,1,2,1],k=1输出:[0] 限制:0<=k<=arr.length<=100000<=arr[i] <=100......
  • GO打包到linux服务器运行
    方法二:本地编译cmd控制台到main.go文件目录下setGOARCH=amd64setGOOS=linuxgobuildmain.go会生成一个没有后缀的二进制文件main将该文件放入linux系统某个文件夹下赋予权限chmod777main最后执行./main就行了。如果想让项目在后台执行:执行nohup./main&,这样......
  • Can't get JDBC type for null
    背景Java连接PostGres库,运行SparkSQL脚本报错,原因是:SQL脚本中不能存在null关键字.解决方案将null替换为''即可.......
  • django中批量导入功能(excel)
    当我们想要通过excel来实现批量导入时,有一种方式:1.需要创建的对象data_dict={}#多个data_dict2.将每一个要创建的对象加入到一个列表当中data=[]data.append(data_dict)3.通过事务进行创建withtransaction.atomic():foriteminrange(0,len(data)):......
  • Golang基础-- select的用法
    select是golang在语言层面提供的多路IO复用的机制,其可以检测多个channel是否ready三个题目示例来说明一下select的大概作用:题目一:声明两个channel,分别为chan1和chan2,依次启动两个协程,分别向两个channel中写入一个数据就进入睡眠。select语句两个case分别检测chan1和chan2是......
  • Rust编程语言入门之cargo、crates.io
    cargo、crates.io本章内容通过releaseprofile来自定义构建在https://crates.io/上发布库通过workspaces组织大工程从https://crates.io/来安装库使用自定义命令扩展cargo一、通过releaseprofile来自定义构建releaseprofile(发布配置)releaseprofile:是预......