当前位置: 首页 > news >正文

算法与数据结构(多数元素)

题目

思路

方法一:哈希表

因为要求出现次数最多的元素,所以我们可以使用哈希映射存储每个元素及其出现的次数。每次记录出现的次数若比最大次数大,则替换。

方法二:摩尔算法

摩尔的核心算法就是对抗,因为存在次数多于一半的数,不同的元素相互抵消,那么剩下的一定就是出现次数最多的那个数。

比如,假设数组是[3,2,3]。初始时,candidate是-1,count是0。第一个元素是3,这时候num不等于candidate(-1),所以执行else if的条件。count减1的话,这时候count是-1,是否满足小于0?是的。于是将candidate设为3,count设为1。接下来是第二个元素2。这时候num不等于3,所以count减1,变成0。这时候count不满足小于0,所以不做任何改变。第三个元素是3,等于candidate,所以count加1,变成2。最后返回3。

这个算法的正确性在于,当存在多数元素时,即使中间阶段被其他元素暂时替代,最终剩下的candidate还是多数元素。因为多数元素的个数超过一半,所以无论如何抵消,最后剩下的肯定是多数元素。

这个算法的核心就是是,每次遇到不同的元素,就减少count,当count减到负的时候,更换候选者。这其实相当于在每一步中,当前的候选者和其他元素进行对抗,如果当前候选者不足以支撑(count被抵消到负),就换新的候选者。这样最终剩下的候选者就是多数元素。

代码

1.哈希表

class Solution {
public:int majorityElement(vector<int>& nums) {unordered_map<int,int> Hashmap;int value=0,freq=0;for(int i=0;i<nums.size();i++){Hashmap[nums[i]]++;if(Hashmap[nums[i]] > freq){value = nums[i];freq = Hashmap[nums[i]];}}return value;}
};

2.摩尔算法

class Solution {
public://摩尔算法int majorityElement(vector<int>& nums) {int candidate=-1,count=0;for(int i=0;i<nums.size();i++){if(nums[i]==candidate){count++;}else if(--count < 0){candidate = nums[i];count = 1;}}return candidate;}
};

相关文章:

算法与数据结构(多数元素)

题目 思路 方法一&#xff1a;哈希表 因为要求出现次数最多的元素&#xff0c;所以我们可以使用哈希映射存储每个元素及其出现的次数。每次记录出现的次数若比最大次数大&#xff0c;则替换。 方法二&#xff1a;摩尔算法 摩尔的核心算法就是对抗&#xff0c;因为存在次数多…...

详解如何使用Pytest内置Fixture tmp_path 管理临时文件

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 临时目录在测试中起着至关重要的作用&#xff0c;它为执行和验证代码提供了一个可控…...

量子计算的五大优势

量子计算的优势有哪些&#xff1f; 量子计算是一个快速发展的领域&#xff0c;有望彻底改变我们处理复杂计算问题的方式。那么&#xff0c;量子计算的优势是什么&#xff1f;与经典计算相比&#xff0c;量子计算又有哪些优势呢&#xff1f;当我们探索量子力学的世界以及量子系…...

行内元素和块级元素

行内元素和块级元素 1.行内元素1.1什么是行内元素1.2行内元素的特点1.3常见的行内元素 2.块级元素2.1什么是块级元素2.2块级元素的特点2.3常见的块级元素 3.行内元素和块级元素的区别 1.行内元素 1.1什么是行内元素 行内元素是指在网页中不会独占一行,而是与其他行内元素在同…...

java面试题-集合篇

Collection 1.Collection有哪些类&#xff1f; Java集合框架中的Collection接口是所有集合类的基础接口&#xff0c;定义了一些基本的集合操作&#xff0c;如添加元素、删除元素、判断是否包含某个元素等。常见的集合类包括List、Set和Queue。 List List接口定义了按照索引…...

二十九、vite项目集成webpack+vue2项目

一、开发 基座应用: 1、安装依赖 npm i @micro-zoe/micro-app@0.8.6 --save 2、在入口处引入(main.ts) import microApp from @micro-zoe/micro-appmicroApp.start()...

小程序之间实现互相跳转的逻辑

1:小程序之间可以实现互相跳转吗 可以实现互相跳转! 2:小程序跳转是否有限制 有限制!限制如下 2.1:需要用户触发跳转 从 2.3.0 版本开始,若用户未点击小程序页面任意位置,则开发者将无法调用此接口自动跳转至其他小程序。 2.2:需要用户确认跳转 从 2.3.0 版本开始…...

算法——数学建模的十大常用算法

数学建模的十大常用算法在数学建模竞赛和实际问题解决中起着至关重要的作用。以下是这些算法的具体信息、应用场景以及部分算法的C语言代码示例&#xff08;由于篇幅限制&#xff0c;这里只给出部分算法的简要代码或思路&#xff0c;实际应用中可能需要根据具体问题进行调整和扩…...

cookie、session、jwt、Oauth2.0、sso 分别有什么用

cookie、session、jwt都是 web 应用中的认证方式&#xff0c;最早只有 cookie&#xff0c;后面觉得所有数据存储在客户端不安全&#xff0c;就出现了 cookie-session&#xff0c;再后面有了 jwt。 cookie工作原理 cookie 数据存储在用户的本地。服务器完全根据 cookie 确定访…...

maven使用默认settings.xml配置时,Idea基于pom.xml更新依赖时报错,有些组件下载时连接超时

1、问题背景&#xff1a;maven使用默认settings.xml配置时&#xff0c;Idea基于pom.xml更新依赖时报错&#xff0c;有些组件下载时连接超时&#xff0c; 通过日志发下&#xff0c;去连接maven.org网站下载依赖&#xff0c;有时候肯定会超时。 2、解决办法&#xff1a;使用国外…...

信息收集-Web应用搭建架构指纹识别WAF判断蜜罐排除开发框架组件应用

知识点&#xff1a; 1、信息收集-Web应用-架构分析&指纹识别 2、信息收集-Web应用-架构分析&WAF&蜜罐 3、信息收集-Web应用-架构分析&框架组件识别 指纹识别 EHole_magic https://github.com/lemonlove7/EHole_magic 指纹识别 Wappalyzer https://github.com…...

蓝桥杯之图

图&#xff1a; 对于图来说&#xff0c;重点在于之后的最短路径算法&#xff0c;这边简单做一下了解即可...

ProxySQL构建PolarDB-X标准版高可用路由服务三节点集群

ProxySQL构建PolarDB-X标准版高可用路由服务三节点集群 一、PolarDB-X标准版主备集群搭建 三台机器上传 polardbx 包&#xff0c;包可以从官网https://openpolardb.com/download获取&#xff0c;这里提供离线rpm。 1、上传 polardbx 安装包 到 /opt目录下 rpm -ivh t-pol…...

【leetcode】双指针:移动零 and 复写零

文章目录 1.移动零2.复写零 1.移动零 class Solution { public:void moveZeroes(vector<int>& nums) {for (int cur 0, dest -1; cur < nums.size(); cur)if (nums[cur] ! 0)swap(nums[dest], nums[cur]);} };class Solution { public:void moveZeroes(vector&l…...

正则化(Regularization)和正则表达式(Regular Expression)区别

文章目录 1. **正则化&#xff08;Regularization&#xff09;**2. **正则表达式&#xff08;Regular Expression&#xff09;**关键区别为什么名字相近&#xff1f; 正则化&#xff08;Regularization&#xff09;和正则表达式&#xff08;Regular Expression&#xff09;不是…...

【C++】C++-教师信息管理系统(含源码+数据文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 【C】C教师信息管理系统&#xff08;含源码&#x…...

MySql从入门到精通

第一部分 基础篇 1.概述 1.1 启动与停止MySql 启动 net start mysql80 停止 net stop mysql80 注意&#xff1a; mysql开机默认启动 1.2 客户端连接 方法一&#xff1a;使用MySQL提供的命令行客户端方法二&#xff1a;系统自带的命令行工具执行指令 mysql [-h 127.0.0.1] …...

27、深度学习-自学之路-NLP自然语言处理-做一个简单的项目识别一组电影评论,来判断电影评论是积极的,还是消极的。

一、如果我们要做这个项目&#xff0c;第一步我们要做的就是需要有对应的训练数据集。 这里提供两个数据集&#xff0c;一个是原始评论数据集《reviews.txt》&#xff0c;以及对应的评论是消极还是积极的数据集《labels.txt》&#xff0c;下面的程序就是找到这两个数据集&…...

微信小程序 - 组件和样式

组件和样式介绍 在开 Web 网站的时候&#xff1a; 页面的结构由 HTML 进行编写&#xff0c;例如&#xff1a;经常会用到 div、p、 span、img、a 等标签 页面的样式由 CSS 进行编写&#xff0c;例如&#xff1a;经常会采用 .class 、#id 、element 等选择器 但在小程序中不能…...

滤波总结 波形处理原理 如何对一个规律的波形进行滤波 显现出真正的波形 如何设计滤波

需要用到的软件:waveserialport vofa++ 1.波形想用MCU进行采集首先你要考虑到你的采集频率因为如果你的对象波形即你要采集的波形,他过于快速的话有一些MCU它是不能的比如说有一些它的主频才36兆72兆呢你如果遇到一个特别快的波形毫秒级别那他就检测不了 2.…...

【代码随想录】刷题记录(115)-岛屿数量(广搜)

题目描述&#xff1a; 题目描述 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成&#xff0c;并且四周都是水域。你可以假设矩阵外均被水包围。 输入描…...

Git指南-从入门到精通

代码提交和同步命令 流程图如下&#xff1a; 第零步: 工作区与仓库保持一致第一步: 文件增删改&#xff0c;变为已修改状态第二步: git add &#xff0c;变为已暂存状态 bash $ git status $ git add --all # 当前项目下的所有更改 $ git add . # 当前目录下的所有更改 $ g…...

uvm错误记录4

如下所示&#xff0c;奇怪的是penable莫名其妙的出X。可问题&#xff0c;我发送激励了。 仔细定位发现&#xff0c;39行用的是vif中的penable, 问题是都是赋值&#xff0c;却出现同时赋值多次&#xff0c;这是因为nonblocking和blocking同时触发导致的&#xff0c;因此&#xf…...

用大模型学大模型03-数学基础 概率论

https://metaso.cn/s/Jp0OU9w 提示词:我正在学习深度学习相关的数学知识&#xff0c;学到了概率论与统计学部分&#xff0c;给我一个入门级的完整教程和实例。 好的&#xff0c;我现在需要回答用户关于深度学习所需的概率论与统计学入门教程和实例的问题。用户希望得到一个完整…...

数字电路-基础逻辑门实验

基础逻辑门是数字电路设计的核心元件&#xff0c;它们执行的是基本的逻辑运算。通过这些基本运算&#xff0c;可以构建出更为复杂的逻辑功能。常见的基础逻辑门包括与门&#xff08;AND&#xff09;、或门&#xff08;OR&#xff09;、非门&#xff08;NOT&#xff09;、异或门…...

基于springboot轨道交通安全评估系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;轨道交通安全评估管理当然不能排除在外。轨道交通安全评估系统是在实际应用和软件工程的开发原理之上&#xff0c;运用Java语言以及Spring…...

多能互补综合能源系统,改变能源结构---安科瑞 吴雅芳

多能互补综合能源系统是一种通过整合多种能源的形势&#xff08;如电力、天然气、热能、冷能等&#xff09;和多种能源技术&#xff08;如可再生能源、储能技术、智能电网等&#xff09;&#xff0c;实现能源利用和配置调整的系统。其目标是通过多能互补和协同优化&#xff0c;…...

Python 量化

Python 量化是指利用 Python 编程语言以及相关的库和工具来进行金融市场数据分析、策略开发和交易执行的过程。 Python 由于其简洁、易学、强大的生态系统和丰富的金融库而成为量化交易的首选编程语言之一。 量化交易在金融领域得到广泛应用&#xff0c;它允许交易者通过系统…...

图数据库Neo4j面试内容整理-属性(Property)

在图数据库中,属性(Property)是用来描述节点(Node)和关系(Relationship)详细信息的键值对。属性可以附加到节点或关系上,用来存储具体的数据,如名字、年龄、时间戳、标签等。属性使得节点和关系不仅能够表示实体或交互,还能包含丰富的、与实体或交互相关的信息。 1. …...

uniapp - iconfont下载本地并且运用至项目上

1、项目中创建一个文件夹放置iconfont相关文件&#xff0c;例如src/assets/iconfont&#xff08;名称自己定义&#xff09; 2、在iconfont下载项目至本地 3、解压后把文件复制进1的文件夹中 4、修改src/assets/iconfont - iconfont.css里的font-face的src地址&#xff0c;修…...

leetcode 1594. 矩阵的最大非负积

题目如下 数据范围 示例 本题难就难在矩阵存在负数&#xff0c;我们可以先思考如果矩阵每个数都大于等于0那么很简单我们只需要维护左边和上面的最大值即可。那么如果遇到负数显然要得到最大值就要和左边和右边的最小值相乘。所以这里我们维护两个二维数组用于存从(0,0)开…...

Vue3 从入门到精通:全面掌握前端框架的进阶之路

一、Vue3 简介 Vue.js 是一款流行的 JavaScript 前端框架&#xff0c;用于构建用户界面。Vue3 作为 Vue.js 的重大升级版本&#xff0c;带来了诸多性能提升和新特性。它采用了 Proxy 实现数据响应式系统&#xff0c;优化了虚拟 DOM 算法&#xff0c;使得应用在运行时更加高效。…...

lightning.pytorch.callbacks内置的Callbacks介绍

PyTorch Lightning 提供了一些 内置回调 (Callback),可以在训练过程中自动执行 检查点保存、学习率调度、早停 等功能。通过使用 Trainer(callbacks=[...]) 来传入这些回调。 PyTorch Lightning 的 Callback 是一种强大的工具,允许用户在训练过程中插入自定义逻辑,而无需修…...

网络运维与网络安全技术分享

网络运维与网络安全介绍之二 在上阶段给大家基本介绍了网络运维与网络安全专业第一阶段的内容之后&#xff0c;接下来&#xff0c;我们就开始进入正式内容分享了&#xff01; 第一阶段&#xff1a;运维基础与网络系统管理之Windows系统的安装部署以及常见Windows应用技巧。 在这…...

基于巨控GRM242Q-4D4I4QHE模块的农村供水自动化监控技术方案

一、系统架构设计 拓扑结构&#xff1a; 传感器层&#xff08;液位/压力/流量&#xff09;→ 巨控GRM242Q模块 → 4G网络 → 云平台 → 手机/PC监控端硬件配置&#xff1a; 核心设备&#xff1a;GRM242Q-4D4I4QHE模块&#xff08;4DI/4DO/4AI/1485&#xff09;传感器&#xff1…...

Java 单元测试框架之 Mockito 详细介绍

本文是博主在学习如何高效创建单元测试时的知识记录&#xff0c;文中项目代码是基于 SpringBoot 项目&#xff0c;测试组件使用的 JUnit 5&#xff0c;单元测试组件使用的 Mockito 。虽然现在都是在使用 AI 助手帮助生成单元测试和代码辅助修改&#xff0c;但我们不能被工具挡住…...

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 , 基于 openEuler 构建 LVS-DR 群集。

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式&#xff0c;比较其各自的优势 NAT模式的优势&#xff1a; 可以隐藏后端服务器的IP地址&#xff0c;提高了系统的安全性。 支持多个后端服务器共享同一个IP地址&#xff0c;提高了系统的可扩展性。 可以在负载均衡器和后端服务…...

mapbox V3 新特性,添加下雪效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;mapbox 从入门到精通 文章目录 一、&#x1f340;前言1.1 ☘️mapboxgl.Map 地图对象…...

谈谈云计算、DeepSeek和哪吒

我不会硬蹭热点&#xff0c;去分析自己不擅长的跨专业内容&#xff0c;本文谈DeepSeek和哪吒&#xff0c;都是以这两个热点为引子&#xff0c;最终仍然在分析的云计算。 这只是个散文随笔&#xff0c;没有严谨的上下游关联关系&#xff0c;想到哪里就写到哪里。 “人心中的成见…...

深入HBase——引入

引入 前面我们通过深入HDFS到深入MapReduce &#xff0c;从设计和落地&#xff0c;去深入了解了大数据最底层的基石——存储与计算是如何实现的。 这个专栏则开始来看大数据的三驾马车中最后一个。 通过前面我们对于GFS和MapReduce论文实现的了解&#xff0c;我们知道GFS在数…...

【前端】【vue】vue2/3,nuxt的插槽使用详解

插槽在Vue2、Vue3和不同版本Nuxt中的使用 Vue2中的插槽 基础插槽 在Vue2中&#xff0c;基础插槽允许在组件的模板中定义一个占位符&#xff0c;然后在使用组件时插入自定义内容。例如&#xff0c;创建一个简单的MyBox组件&#xff1a; <template><div class"…...

逆境、情绪低落时可用的锦囊、咒语

《浮生一梦》&#xff08;一&#xff09; 大多数人都经历过逆境低谷、失败、挫折、看似无端情绪低落、抑郁… 人逢情绪低落时&#xff0c;几乎任何话都听不进去&#xff0c;再正的能量也塞不进脑子&#xff0c;笑话笑不出来&#xff0c;食不知味… 复原力不强者很难走出来&am…...

【目标检测json2txt】label从COCO格式json文件转YOLO格式txt文件

目录 🍀🍀1.COCO格式json文件 🌷🌷2.YOLO格式txt文件 💖💖3.xml2json代码(python) 🐸🐸4.输入输出展示 🙋🙋4.1输入json 🍂🍂4.2输出txt 整理不易,欢迎一键三连!!! 送你们一条美丽的--分割线-- 🍀🍀1.COCO格式json文件 COCO数…...

ASP.NET Core SixLabors.ImageSharp 位图图像创建和下载

从 MVC 控制器内部创建位图图像并将其发送到浏览器&#xff1b;用 C# 编写并与 Linux 和 Windows 服务器兼容。 使用从 ASP.NET MVC 中的控制器下载任何文件类型File。 此示例创建一个位图 (jpeg) 并将其发送到浏览器。它需要 NuGet 包SixLabors.ImageSharp v1.0.4。 另请参…...

Java开发实战:使用IntelliJ IDEA 开发Spring Boot + MyBatis + MySQL的详细实现步骤

使用IntelliJ IDEA 开发Spring Boot MyBatis MySQL的详细实现步骤 在本文中&#xff0c;我们将一步步讲解如何在IntelliJ IDEA 2024.2.3中使用Spring Boot、MyBatis和MySQL来开发一个简单的Web应用。通过本文&#xff0c;你将学会如何设置项目、配置数据库、创建实体类、编写…...

python-leetcode-在排序数组中查找元素的第一个和最后一个位置

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣&#xff08;LeetCode&#xff09; class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:def find_first(nums, target):left, right 0, len(nums) - 1result -1while left < rig…...

Oracle RHEL 7.8 安装

前言 Red Hat Enterprise Linux Server release 7.8 为企业级 SO 镜像。绝大部分企业如果使用Oracle数据库均会使用其企业版 OS &#xff0c;能够很好的支持数据库的运行 文档目的 当前文档仅针对 VMware Workstation Pro 进行 OS 介质安装。 镜像下载地址 注意&#xff1…...

Java多线程交替打印

1. 双线程交替打印奇偶数 class Printer{private int num1; //要打印的数字private Object myLock new Object();public static void main(String[] args){Printer pnew Printer();Thread t1new Thread( ()->p.printNum(true), "threadA");t1.start();Thread t…...

华为2288H V5服务器无法启动问题处理

问题&#xff1a;通电后服务器前面显示888&#xff0c;点击电源键没有反应 一.通过管理口管理服务器硬件设备 华为2288H V5它默认的IP是192.168.2.100 网关是255.255.255.0 2.将网线一头连接服务器的Mgmt口&#xff0c;另一头来连接笔记本的网口&#xff0c;将笔记本的的本地…...

阿里巴巴对deepseek回应

行业背景与发布契机 当杭州的DeepSeek在相关领域展现实力时&#xff0c;阿里巴巴为了在技术竞争中占据一席之地&#xff0c;推出新的视觉 - 语言模型&#xff0c;试图吸引行业关注。 Qwen2.5 - VL系列模型发布详情 模型介绍&#xff1a;阿里巴巴发布Qwen2.5 - VL系列视觉 - 语…...