algo-多数排序

多数排序在leetcode只是一个简单题,但是衍生出来的多种解法却非常有意思

首先是最容易想到的hash和排序算法,接着是

随机化

从概率来讲一个随机挑选一个元素并验证都很大概率是众数

func majorityElementRandom(nums []int) int {n := len(nums)mc := n / 2for {candidate := nums[rand.Int63n(int64(n))]count := 0for _, num := range nums {if num == candidate {count++}if count > mc {return candidate}}}
}

分治法

分治法是基于数组的众数一定来自于左右子数组的众数之一,因此将数组递归分治最后聚合得到最终的数组多数

func majorityElement(nums []int) int {var f func(lo, hi int) intf = func(lo, hi int) int {// 如果仅有一个元素,那么该元素就是众数if lo == hi {return nums[lo]}// 递归数组左右边,找到左右众数mid := lo + (hi-lo)/2left := f(lo, mid)right := f(mid+1, hi)// 若左右众数相等,直接返回if left == right {return left}// 统计左右众数的个数var lc, rc intfor i := lo; i <= hi; i++ {switch nums[i] {case left:lc++case right:rc++}}// 比较个数,返回最终众数if lc > rc {return left}return right}return f(0, len(nums)-1)
}

Boyer-Moore

这是本题中最优雅的解法了。设众数+1,非众数-1,那么即使最开始选上的不是众数,由于众数是超过半数的,那么一定在某个众数,发生计数为0的情况,那么此时选上的数就是众数

func majorityElement(nums []int) int {var count, candidate intfor _, num := range nums {if count == 0 {candidate = num}if candidate == num {count++} else {count--}}return candidate
}

https://leetcode.cn/problems/majority-element/description/

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

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

相关文章

RAM、ROM、flash、eMMC

RAM&#xff1a;Random-Access Memory的缩写&#xff0c;意思为“随机存取存储器” ROM&#xff1a;Read-Only Memory的缩写&#xff0c;意思为“只读存储器” 总体来看&#xff1a;都是存储器 最大区别&#xff1a;ROM可以在停止供电的时候仍然保存着数据&#xff1b;RAM在…

又有狗咬娃!江西8岁男童买早餐被狗扑咬,满脸血缝了90多针!

位于江西省吉安市吉安县实验小学门口&#xff0c;一名年仅8岁的男童在去买早餐的路上遭遇了一场恐怖的袭击。据报道&#xff0c;孩子是在清晨的买早餐路上被一只恶狗扑倒咬伤的&#xff0c;伤口深可见骨。 孩子的母亲悲痛欲绝地描述了当时的情景&#xff0c;孩子被咬伤后躺在地…

ky10 x86 一键安装wvp gb28181 pro平台

下载代码 git clone https://gitcode.net/zengliguang/ky10_x86_wvp_record_offline_install.gitfinalshell mobaxterm 修改服务器ip 查看服务器ip ip a 在脚本文件中修改服务器ip 执行安装脚本 切换到root用户 sudo su cd ky10_x86_wvp_record_offline_install/ sourc…

智能优化算法应用:基于黑寡妇算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黑寡妇算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黑寡妇算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑寡妇算法4.实验参数设定5.算法结果6.参考文献7.…

Git 应用 -- 多人协作开发场景1

目录 1. 既查看本地仓库的分支&#xff0c;又查看远程仓库的分支&#xff1a; git branch -a &#xff08;但是远程的分支只能查看&#xff0c;不能直接切换到远程的分支上&#xff09; 2. 本地的分支和远程的分支建立连接&#xff1a;git checkout -b [分支名] [要连接远程的…

B027-MySQL增强

目录 多表查询为什么要用多表查询&#xff1f;笛卡尔积和内连接消除笛卡尔积外键数据库内连接练习左连接查询和右连接查询等值连接out join自连接子查询 数据操作(DML)数据的插入数据的删除数据的修改 数据库的备份与恢复Dos命令行窗口导出Dos命令行窗口导入Navicat导出Navicat…

if与switch语句的运用—输出成绩

1.给出一个百分制成绩&#xff0c;要求输出成绩等级A、B、C、D、E。90分以上为A&#xff0c;81-89分为B&#xff0c;70-79分为C&#xff0c;60&#xff0d;69分为D&#xff0c;60分以下为E。 if语句实现 #include <stdio.h> int main() { int score; printf(&qu…

146. LRU 缓存 --力扣 --JAVA

题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回…

基于SSM的图书馆管理系统运行部署教程

基于SSM的图书馆管理系统运行部署教程 1、下载2、数据准备-导入sql文件3、项目导入idea4、项目运行5、测试6、日志乱码问题 1、下载 源码下载地址&#xff1a; https://download.csdn.net/download/weixin_44796239/85072348下载之后&#xff0c;会得到一个压缩包&#xff1a; …

LeetCode-470. 用 Rand7() 实现 Rand10()【数学 拒绝采样 概率与统计 随机化】

LeetCode-470. 用 Rand7 实现 Rand10【数学 拒绝采样 概率与统计 随机化】 题目描述&#xff1a;解题思路一&#xff1a;首先说一个结论就是(rand_X() - 1) Y rand_Y() > [1,X*Y]&#xff0c;即可以等概率的生成[1, X * Y]范围的随机数&#xff0c;其实就像军训的时候报数…

抖店怎么对接达人带货?达人渠道整理,实操详解!

我是电商珠珠 很多人在抖店开通后&#xff0c;按照流程去正常的跑自然流量&#xff0c;再去找达人带货让自己店铺的流量增多&#xff0c;得到相应的曝光。 但是一些新手小白并不知道从哪去找达人&#xff0c;或者说不知道怎么去筛选达人。 一开始所有人都想着去找头部主播&a…

MyBatis-Plus动态更改查询的表名或字段名

部分业务可能会需要根据参数不同而查询不同的表&#xff0c;或者查询不同的字段。使用MyBatis-Plus可以很方便地实现这种需求&#xff0c;甚至不需要使用.xml文件。 三张数据表user、user1、user2内容都如下&#xff1a; idnameagesex1张三1812李四<null><null>3&…

ubuntu启动kafka报错Could not create the Java Virtual Machine.

网上有两种方式&#xff0c;但是需要具体看自己的错误信息&#xff0c;我的错误信息如下: 这里大概是说要写入日志无权限&#xff0c;所以执行的时候&#xff0c;前面加一下sudo 执行成功。

反射(理论详细到不能详细,需要不断实践)

反射机制&#xff1a; 需求&#xff1a;从【外部】配置文件中获取 类名和方法名 将其运行-》只有反射可以实现 在不修改源码的情况下控制程序-》设计模式的ocp开闭原则 &#xff08;开&#xff1a;功能开放给你使用&#xff0c;闭&#xff1a;不让修改源码&…

阿里云语雀频繁崩溃,有什么文档管理工具是比较稳定的?

10月23 日14:00左右&#xff0c;蚂蚁集团旗下的在线文档编辑与协同工具语雀发生服务器故障&#xff0c;在线文档和官网都无法打开。直到当天晚上22:24&#xff0c;语雀服务才全部恢复正常。从故障发生到完全恢复正常&#xff0c;语雀整个宕机时间将近 8 小时&#xff0c;如此长…

【SpringCloud篇】Eureka服务的基本配置和操作

文章目录 &#x1f339;简述Eureka&#x1f6f8;搭建Eureka服务⭐操作步骤⭐服务注册⭐服务发现 &#x1f339;简述Eureka Eureka是Netflix开源的一个基于REST的服务治理框架&#xff0c;主要用于实现微服务架构中的服务注册与发现。它由Eureka服务器和Eureka客户端组成&#…

机器学习与 S3 相集成 :释放数据的力量

文章作者&#xff1a;Libai 引言 在当今数据驱动的世界中&#xff0c;企业不断寻求如何高效利用企业自身所产生的数据的解决方案。机器学习已经成为一种提取有价值的见解和做出数据驱动决策的强大工具。然而&#xff0c;机器学习模型的成功在很大程度上依赖于高质量数据的可用…

算能技术资料地址、Demo github地址

技术资料地址&#xff1a; https://developer.sophgo.com/site/index/material/38/all.html Demo github地址&#xff1a;https://github.com/sophgo/sophon-demo

人工智能在警务工作中的运用

AI 能否帮助警察打击犯罪&#xff1f; 执法部门负责维护公共安全&#xff0c;他们必须处理随之而来的所有挑战。幸运的是&#xff0c;警察可以依靠技术来处理很多工作。近几年来&#xff0c;尤其是人工智能技术在全球变成了警务工作中的一个重要部分。 随着基于 AI 的警务技术…

java-poi操作笔记

row表示行&#xff0c;cell表示row中的第几个cell package sample.Utils;import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Workbook; impor…