剑指offer-刷题笔记-简单题-JZ39 数组中出现次数超过一半的数字

剑指offer所有编程练习总结分析 给出剑指offer所有题目描述和对应的解题思路,并且在最有给出对应的代码展示和测试内容 由于牛客剑指Offer题目经过整理和筛选,是面试备考的经典资源之一,因此它的重要性在面试准备过程中是很高的。做这些题目可以帮助面试者熟悉常见的面试题型、巩固基础知识、提升编程能力,为应对面试提供了很好的准备。然而,还需注意不仅仅局限于做题,理解背后的原理和思想同样重要,以便能够在面试时灵活运用和展示自己的能力。 阅读详情

剑指offer-刷题笔记-简单题-JZ39 数组中出现次数超过一半的数字

版本1-找众数

class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
        sort(numbers.begin(), numbers.end());
        int result = numbers[numbers.size()/2];
        int i = 0;
        int count = 0;
        while(numbers[i] <= result)
        {
            if(numbers[i] == result)
            {
                count ++;
            }
            i++;
        }
        if(count > numbers.size()/2) return result;
        return 0;
    }
};

版本2

加入数组中存在众数,那么众数一定大于数组的长度的一半。
思想就是:如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,最后留下的数肯定是众数。
具体做法:

1. 初始化:候选人cond = -1, 候选人的投票次数cnt = 0
2. 遍历数组,如果cnt=0, 表示没有候选人,则选取当前数为候选人,++cnt
3. 否则,如果cnt > 0, 表示有候选人,如果当前数=cond,则++cnt,否则–cnt
直到数组遍历完毕,最后检查cond是否为众数

class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
        int cond = -1;
        int cnt = 0;
        for (int i=0; i<numbers.size(); ++i) {
            if (cnt == 0) {
                cond = numbers[i];
                ++cnt;
            }
            else {
                if (cond == numbers[i]) ++cnt;//相等的个数
                else --cnt;//不相等的个数
            }

        }
        cnt = 0;//计算数组中众数的个数
        for (const int k :numbers) {
            if (cond == k) ++cnt;
        }
        if (cnt > numbers.size() / 2) return cond;
        return 0;
    }
};

【SPSS实战】手动实现Quade非参数协方差分析:从数据准备到结果解读 本文详细介绍了在SPSS中手动实现Quade非参数协方差分析的实战方法。当数据不满足正态分布等参数检验假设时,通过将协变量和因变量转换为秩,并利用秩回归残差进行Kruskal-Wallis组间比较,提供了一种清晰、可操作的近似解决方案。该方法有效解决了非正态数据的协变量调整问题,适用于实验研究和调查数据分析。 阅读详情

相关推荐

Proteus仿真实战:用STM32F103C8T6输入捕获模式精准测量PWM频率(附完整代码)

本文详细解析了如何在Proteus仿真环境中,利用STM32F103C8T6的输入捕获模式精准测量PWM频率。文章从输入捕获的工作原理、Proteus电路搭建、模块化代码实现到调试优化,提供了完整的实战指南和代码示例,帮助开发者深入理解并掌握这一关键技术。

weixin_29158047的博客 257

数组中出现次数超过一半的数字(找众数)

数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 胡 在这里插入代码片

叨叨的博客 700

【Excel VBA 编程】表格内自动生成进度条

在表格中生成进度条,进度条需要自适应单元格的宽度,根据不同进度区间变换颜色,并且按照进度数据大小显示其长短

wei1019的专栏 1519

剑指offer:数组中出现次数超过一半的数

题目描述 题目抽象:给定一个数组,找出数组中的众数,若有,返回众数,若没有,返回0 众数定义:数组中出现次数大于数组一般的元素 思路及代码 哈希 此题目一开始我想到的就是这种哈希的方法,先把每个数的出现次数存到数组中,再把此数组遍历一次,返回众数;下面第一个是我自己的代码有点繁琐。第二个是灵活运用c++的map结构后的简化代码,两种思想相同; 代码一 时间复杂度:O(n^2) 空间复杂度:O(n) class Solution { public: int MoreThanHalfNum_So

weixin_43342105的博客 346

普罗米修斯监控达梦数据库集群

-----------------------------------新增文件---------------------------------------注:图上即为启动成功,如果没有问题,则使用nohup后台启动程序。官网地址:https://github.com/gy297879328/dameng_exporter。注:prometheus的对数据库的指标采集如果高于60s一次,请手动修改提供表盘中的计算值。修改dameng_exporter.config配置文件,修改账号密码的部分。

weixin_49985403的博客 1681

基于rms包的限制性立方样条回归(RCS)R代码实现

RCS

2301_79584199的博客 2万+

For循环

For循环 所有循环都可以用while和do…while表示,但java提供了另一种语句——for循环,使一些循环结构更简单。 for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。 for循环执行次数是在执行前就确定的,语法结构: for循环 package struct; public class ForDemo01 { public static void main(String[] args) { //for循环结构; //1到100;

m0_49545872的博客 360

Chromatix 7实战:从零开始调优ISP模块的完整流程(附常见报错解决方案)

本文提供了高通平台Camera调试工具Chromatix 7的完整实战指南。详细阐述了从环境准备、项目初始化、基础校正(如LSC、BPC)到核心ISP管线(Demosaic、CCM、HDR)及后处理(CAC、ANR)的调优全流程,并附带了常见报错(如“未初始化实例”)的解决方案,旨在帮助工程师建立系统性的调试方法论。

weixin_29290863的博客 622

《剑指offer》每日分享三道题- 2 day

《剑指offer》系列第二弹,让我们用饱满的热情,迎接接下来的几道小题。 >本系列分享的都是常规做法和全新思路的总结,各位可千万不要看着眼熟,而错过新颖的思路噻!!! 文章目录1.将数组中出现次数超过一半的数字返回(1)采用unordered_map方式(2)先排序再找中间位置元素记录次数进行验证(3)候选法,两个不同的数据相消减2. 将字符串中的空格替换成 %203.递归的思路实现单链表的逆序打印4. 大郎,喝鸡汤了!!! 1.将数组中出现次数超过一半的数字返回 (1)采用unordered_m.

weixin_58843717的博客 528

PCA9698嵌入式C++驱动库:高性能I²C GPIO扩展方案

GPIO扩展是嵌入式系统中解决MCU引脚资源不足的关键技术,其核心原理在于通过串行总线(如I²C)桥接主控与外设寄存器,实现逻辑引脚到物理IO的映射与状态同步。技术价值体现在低开销、高确定性与多设备可扩展性,广泛应用于工业控制、传感器节点和LED矩阵驱动等实时场景。本文聚焦PCA9698——一款支持24通道双向IO、中断输出与可编程驱动模式的I²C GPIO扩展芯片,结合其C++驱动库的影子寄存器机制、端口级原子操作及非阻塞同步设计,提供面向资源受限平台(如ATmega2560)的工程就绪方案。

weixin_35756637的博客 626

基于MATLAB的PDT DMR物理层仿真

PDT DMR物理层仿真的目标是评估系统的误码率(Bit Error Rate,BER),以及验证和优化各种调制方案、编码方案和信道模型。下面将介绍如何进行PDT DMR物理层的仿真,并提供相应的MATLAB源代码。通过上述步骤,我们可以进行基于MATLAB的PDT DMR物理层仿真,并评估系统的性能。根据实际需求,我们可以修改仿真参数和添加更复杂的信道模型,以更全面地评估系统性能。最后,我们可以将仿真结果进行可视化和分析。首先,我们需要设置仿真的参数,包括调制方案、编码方案、信道模型和信噪比等。

TechPulseZ的博客 458

C++学习笔记(十五)——vector练习题

只出现一次的数字 思路:简单的位运算,对位运算想深入了解的可以看我这篇文章位运算。 class Solution { public: int singleNumber(vector<int>& nums) { int n=0; for(int i=0;i<nums.size();i++) { n^=nums[i]; } return n; } };...

m0_58367586的博客 1950

python抓取美团外卖的数据(商家、评分、评论)

本文详细介绍了如何使用Selenium和抓取美团外卖的商家、评分和评论数据。我们从基础的爬虫原理入手,分析了美团外卖的网页结构,提出了应对反爬虫机制的策略,并给出了详细的代码实现。通过使用Selenium,我们能够绕过动态加载内容的限制,直接抓取网页中的商家信息和评论。结合多线程和代理池等技术,我们可以进一步提高爬虫效率,并避免IP被封禁。未来,随着爬虫技术的发展,我们可以进一步探索深度抓取、数据清洗和数据分析等高级应用,以实现更智能的网页数据抓取。

2201_76125261的博客 2694

剑指offer第2版:搜索算法(二分/DFS/BFS)

搜索的过程,本质就是排除!!!

weixin_51142926的博客 5325

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

《剑指offer》刷题记录汇总篇

《剑指offer》刷题汇总1 前言2 刷题网站3 刷题笔记汇总 1 前言   最近啃了个把月的数据结构与算法,有点飘了,准备拿牛客网的剑指offer模块练练手,个人觉得自己刚入门(或许还没入),所以这篇博客比较适合想学习数据结构或者刚接触数据机构的新手朋友朋友们,当然,大佬们也可以看看,一是指导,二是差缺补漏。   刷题顺序即题目顺序,时间的话大概一周 2 刷题网站 点击直达:剑指offer 3 刷题笔记汇总 题号 题目 知识点 JZ1 二维数组中的查找 数组、查找 JZ2 替换空格 字

郑德帅 864

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

《剑指offer》39--数组中出现次数超过一半的数字[C++]

题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解题思路 1Boyer-Moore Majority Vote Algorithm 多数投票问题,可以利用 Boyer-Moore Majority Vote Algo...

贫道绝缘子的博客 343

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

题目链接 题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 解题思路: 1.哈希 存储每个数字和其出现的次数,当次数大于长度的一半即返回,不用等到完全建立哈希表 class Solution: def majorityElement(self, nums: List[int]) -> int: n=len(n

weixin_44740082的博客 507

LeetCode刷题总结 - 剑指offer系列 - 持续更新

LeetCode刷题总结

qq_45464560的博客 5241

【剑指offer】数组中出现次数超过一半的数字

剑指offer:数组中出现次数超过一半的数字

weixin_63449996的博客 349

【算法】剑指offer - JZ39 数组中出现次数超过一半的数字

题目链接 候选法(最佳解法) 时间复杂度:O(N) 空间复杂度:O(1) 如果把数字当作人种,一个数字和另外数字打了起来,同归于尽,最后剩下的是不是人数最多的那种人。这里要满足一个条件:某类人的数目一定要大于总人数的一半。 **算法步骤:**选择输入数组的第一个元素作为候选元素target,设置其出现次数为1,随后遍历数组,当遇到和target相同的元素,cnt+1;不同的元素,cnt-1.当cnt==0时,选择下一个元素作为候选元素,并且置cnt=1,遍历到数组的最后,剩下的target就是要求的结果。

Bitdancing的专栏 776

剑指offer(C++)-JZ39:数组中出现次数超过一半的数字(算法-其他)

C++实现——数组中出现次数超过一半的数字

翟天保的博客 4481

Python实现牛客网《剑指offer》JZ1 JZ2 JZ3 JZ7

Python实现牛客网《剑指offer》JZ1 JZ1 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 代码 class Solution: def Find(self, target, array): if len(array) == 0 or len(array[0]) == 0 : return False m=0 n=l

vvv__vvv的博客 1014

(python版)《剑指Offer》JZ28:数组中出现次数超过一半的数字

牛客 Leetcode 【思路1】排序,取中间元素 时间复杂度为O(nlogn) class Solution: def majorityElement(self, nums: List[int]) -> int: if not nums: return None nums.sort() return nums[int(len(nums)/2)] ''' 作者:xiao-xue-66 链接:https://leetcod

sinat_29950703的博客 317

java 剑指offer之[数据结构 简单]JZ39 数组中出现次数超过一半的数字

题目的链接在这里:https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 目录题目大意一、示意图二、解题思路简单方法 题目大意 给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。 数据范围:n \le 50000n≤50000,数组中元素的值 0 \le val

wzw的博客 200

【剑指offer-C++】JZ39:数组中出现次数超过一半的数字

【剑指offer-C++】JZ39:数组中出现次数超过一半的数字

❀雾里看花花里看雾❀ 151

【牛客 - 剑指offer】JZ39 数组中出现次数超过一半的数字 Java实现 HashMap的简单入门应用

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

guliguliguliguli的博客 220
上一篇: 剑指offer-刷题笔记-简单题-JZ52 两个链表的第一个公共结点
下一篇: 剑指offer-刷题笔记-简单题-JZ44 数字序列中某一位的数字
xiaoliyu00
博客等级 码龄9年 4180粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值