力扣每日一练(24-1-16)

我一开始想到的是,如果数字相同则加一。

然而,对了一点点,而已。

高手的方法不是普通人在几分钟内能想得出来的,hh

继续补充:

如果数字不同则减一,如果计数到达了0,则更新数字,最终更新并留存下来的数字即为“多数人”

以上就是Boyer-Moore投票算法!

它的基本思想是,每次从序列里选择两个不相同的数字删除掉(或称为“抵消”),最后剩下的数字就是出现次数大于总数一半的数字。

Python:

def majorityElement(nums):count = 0candidate = Nonefor num in nums:if count == 0:candidate = numcount += (1 if num == candidate else -1)return candidate

   candidate变量用于保存当前的候选多数元素,count变量用于保存candidate的出现次数。遍历数组中的每个元素,如果count为0,就将candidate设置为当前元素;然后,如果当前元素等于candidate,就将count加1,否则将count减1。最后,candidate就是多数元素。

        "Boyer-Moore"是两位计算机科学家的姓氏,Robert S. Boyer和J Strother Moore。他们共同发明了Boyer-Moore字符串搜索算法,这是一种高效的字符串搜索算法。

        可以用于在数组中找出多数元素。

C#

public int MajorityElement(int[] nums) {int count = 0;int? candidate = null;foreach (int num in nums) {if (count == 0) {candidate = num;}count += (num == candidate) ? 1 : -1;}return candidate.Value;
}

秀了个杂技:

        在C#中,int?是一个可空类型,它可以包含一个有效的int值,也可以包含null。这与Python中的None类似。在这个例子中,我们使用int?类型的candidate变量来保存当前的候选多数元素,初始值为null

        当我们确定了多数元素并准备返回结果时,我们需要从candidate变量中获取其int值。在C#中,我们使用.Value属性来获取可空类型变量的值。如果candidatenull,访问.Value属性会抛出InvalidOperationException异常。但在这个问题中,我们可以假设数组总是存在多数元素,所以candidate永远不会为null,访问.Value属性总是安全的。

        所以,我们返回的是candidate.Value,而不是candidate

        其实没什么卵用,在这里来说,用int candidate = 0;是一点问题没有的。

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

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

相关文章

论文复现|tightly focused circularly polarized ring Airy beam

请尊重原创的劳动成果 如需要转载,请后台联系 前言 采用MATLAB复现一篇论文里面的插图,涡旋光束的聚焦的仿真方式有很多种,这里采用MATLAB进行仿真,当然也有其他的很多方式,不同的方式各有千秋。 论文摘要 本文证明…

Kafka消费流程

Kafka消费流程 消息是如何被消费者消费掉的。其中最核心的有以下内容。 1、多线程安全问题 2、群组协调 3、分区再均衡 1.多线程安全问题 当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。 对于线程安全&…

uni-app的学习【第三节】

五 运行环境判断与跨端兼容 uniapp为开发者提供了一系列基础组件,类似HTML里的基础标签元素,但uni-app的组件与HTML不同,而是与小程序相同,更适合手机端使用。 虽然不推荐使用 HTML 标签,但实际上如果开发者写了`div`等标签,在编译到非H5平台时也会被编译器转换为 `view`…

@RequiresApi(api = Build.VERSION_CODES.O)

问题 RequiresApi(api Build.VERSION_CODES.O) 详细问题 对于代码 // 格式化日期为MySQL的DATE类型格式private String formatDate(LocalDate date) {DateTimeFormatter formatter DateTimeFormatter.ofPattern("yyyy-MM-dd");return date.format(formatter);}o…

C# 面向切面编程之AspectCore初探

写在前面 AspectCore 是Lemon名下的一个国产Aop框架,提供了一个全新的轻量级和模块化的Aop解决方案。面向切面也可以叫做代码拦截,分为静态和动态两种模式,AspectCore 可以实现动态代理,支持程序运行时在内存中“临时”生成 AOP 动…

解决git : 无法将“git”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确

首先,确保你已经正确安装了git,并且git的安装路径已经添加到系统的环境变量中。你可以在命令行中输入“git --version”来检查git是否已经正确安装和配置。 如果git已经正确安装并且路径已经添加到系统的环境变量中,但仍然出现这个问题&…

深入云原生—基于KubeWharf深度剖析-以公司实际应用场景为例深度解读

各位好,这里是难忘,本人对云原生也是研究了2年多了,算是略有所得,本次就来深入云原生—基于KubeWharf深度剖析场景与解读。我们需要先了解一下 KubeWharf,可能很多人都感觉到有点陌生吧,下面我们来一起学习…

助力工业焊缝质量检测,YOLOv7【tiny/l/x】不同系列参数模型开发构建工业焊接场景下钢材管道焊缝质量检测识别分析系统

焊接是一个不陌生但是对于开发来说相对小众的场景,在我们前面的博文开发实践中也有一些相关的实践,感兴趣的话可以自行移步阅读即可:《轻量级模型YOLOv5-Lite基于自己的数据集【焊接质量检测】从零构建模型超详细教程》 《基于DeepLabV3Plus…

【Python】torch中的.detach()函数详解和示例

在PyTorch中,.detach()是一个用于张量的方法,主要用于创建该张量的一个“离断”版本。这个方法在很多情况下都非常有用,例如在缓存释放、模型评估和简化计算图等场景中。 .detach()方法用于从计算图中分离一个张量,这意味着它创建…

pip和conda添加和删除镜像源

conda不小心安装了一个同名的环境,不小心就把原来搞了两天的旧环境覆盖了,气死了,这里记录一下再来一遍的过程 conda create --name nerfstudio -y python3.8 python -m ensurepip --default-pip conda remove --name env_name --all D:\mini…

必示科技助力中国联通智网创新中心通过智能化运维(AIOps)通用能力成熟度3级评估

2023年12月15日,中国信息通信研究院隆重公布了智能化运维AIOps系列标准最新批次评估结果。 必示科技与中国联通智网创新中心合作的“智能IT故障监控定位分析能力建设项目”通过了中国信息通信研究院开展的《智能化运维能力成熟度系列标准 第1部分:通用能…

PHP项目如何自动化测试

开发和测试 测试和开发具有同等重要的作用 从一开始,测试和开发就是相向而行的。测试是开发团队的一支独立的、重要的支柱力量。 测试要具备独立性 独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具。没有…

STM32--7针0.96寸OLED屏幕显示(4线SPI)

本文介绍基于STM32F103C8T60.96寸OLED(7针)的显示(完整程序代码见文末链接) 一、简介 OLED,即有机发光二极管( Organic Light Emitting Diode)。 OLED 由于同时具备自发光,不需背光…

自动化理论基础(2)—开发语言之Python

一、知识汇总 掌握 Python 编程语言需要具备一定的基础知识和技能,特别是对于从事自动化测试等领域的工程师。以下是掌握 Python 的一些关键方面: 基本语法: 理解 Python 的基本语法,包括变量、数据类型、运算符、条件语句、循环…

C++ 设计模式之桥接模式

【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C编码部分】 【简介】什么是桥接模式 桥接模式(Bridge Pattern)是⼀种结构型设计模式,它的U…

倍福嵌入式PLC开发团队建设

倍福嵌入式PLC开发工程师确实比较难找,这是因为这个领域需要具备丰富的专业知识和技能,而且经验越丰富的工程师越难找到。以下是一些可能导致倍福嵌入式PLC开发工程师难找的原因: 具备相关技能的工程师数量相对较少:嵌入式PLC开发…

777 权限 撤回

Linux误执行chmod -R 777 / 后的成功挽救方法_误操作chmod 777-CSDN博客 cd /etcchmod 644 passwd group shadow chmod 400 gshadow cd sshchmod 600 moduli ssh_host_dsa_key ssh_host_key ssh_host_rsa_key chmod 644 ssh_config ssh_host_dsa_key.pub ssh_host_key.pub …

XUbuntu22.04之免费思维导图工具(二百零六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Kafka集群的安装与配置

一、安装JDK 1、在usr目录下新建Java目录,然后将下载的JDK拷贝到这个新建的Java目录中1 创建目录命令:mkdir /usr/java 2、进入到Java目录中解压下载的JDK 解压命令:tar -zxvf jdk-18_linux-x64_bin.tar.gz 在1主机上,将安装包…

SQL-用户管理与用户权限

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误&am…