数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。 由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。 如果不存在则输出0。 题目分析: 由于要输出的这个数超过数组长度的一半 所以不难理解 如果存在的话 这个数一定是排完序后的数组的中间元素 因此我们将数组有序之后 用一个count记录... 阅读详情

题目: 数组中有一个数组出现的次数超过数组长度的一半 请找出这个数字


解法1:最直观的方法是对数组进行排序 如果排好序就很容易计算出每个数字出现的次数 排序的时间复杂度为O(nlogn) 

解法2: 如果对这个数组排序 要找出出现次数超过数组长度一半的数字 这个输液就是长度为n的数组第n/2大的数字 即中位数

          可以用快速排序的方法找出任意第K大的数字 算法复杂度为O(n)

           在随机快速排序的算法中 先从数组中随机选择一个数字 然后调整数组中数字的顺序 使得比选中数字小的数都排在它的左边 比选中数字大的数都排在它的右边 如果这个选中的数字下标刚好为n/2 那么这个数字就是数组的中位数  如果它的下标大于n/2 那么中位数应该位于它的左边 我们可以接着在它的左边部分数组查找 如果它的下标小于n/2 那么中位数位于右边数组 可以在右边部分数组进行查找 


解法3: 数组中有一个数字出现的次数超过数组长度的一半 也就是说它出现的次数比其它所有数字出现次数的总和还要多 因此我们可以遍历数组的时候 保存两个值 一个是数组中的数字 一个是次数 当我们遍历下一个数字是 如果这个数字与之前保存的数字不一样 则次数减1 若相同 则次数加1 如果次数为0 则保存这个数字 并将次数加1

由于要找的数字出现的次数比其它数字出现的次数之和还要多 因此要找的数字肯定是最后一次把次数设为1时对应的数字 

数组中出现次数超过一半的数字(Java) 题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, 2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。第一思路:... 阅读详情

相关推荐

WSL2离线安装Ubuntu终极指南:绕过Microsoft Store慢速下载(附最新22.04 LTS离线包)

本文提供WSL2离线安装Ubuntu 22.04 LTS的完整指南,帮助开发者绕过Microsoft Store下载慢的问题。通过PowerShell命令配置环境、获取离线安装包并完成安装,同时包含初始配置、资源优化及常见问题解决方案,助您快速搭建高效的Linux开发环境。

c8d9e0f1的博客 899

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

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。因为2在数组中出现的次数超过5次,所以输出2. public class overhalfprint { public static int moreThanHaft(int[] num){ int result = -1; ...

Sophisticate11的博客 1598

BUCK电路为何无法实现100%占空比?自举电路原理与替代方案解析

在开关电源设计中,DC-DC转换器是实现电压变换的核心器件,其工作原理基于功率开关管的周期性导通与关断。BUCK(降压)电路作为一种经典拓扑,通过调节开关管的占空比来控制输出电压。然而,其占空比存在理论上限,无法达到100%,这一限制源于高边开关管的驱动需求。为了驱动高边N沟道MOSFET(NMOS),需要栅极电压高于源极电压,而自举(Bootstrap)电路通过利用开关节点电压的跳变,巧妙地生成了这一高压驱动信号。自举电路必须在每个开关周期内存在续流阶段(低边管导通)为电容充电,这从根本上限制了最大占空比

weixin_32239523的博客 308

Java——数组中出现次数超过一半的数字

给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。

m0_60867520的博客 848

华为路由器 VRRP主备配置

3、R3 出口路由器。

一直被模仿,从未被超越 5584

Open-Sora代码详细解读(1):解读DiT结构

目前开源的DiT视频生成模型不是很多,Open-Sora是开发者生态最好的一个,涵盖了DiT、时空DiT、3D VAE、Rectified Flow、因果卷积等Diffusion视频生成的经典知识点。本篇博客从Open-Sora的代码出发,深入解读背后的原理。

沉迷单车的追风少年 2264

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

题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 function MoreThanHalfNum_Solution(numbers) { let len = numbers.length; let i = ...

Jane_96的博客 1018

RK3588开发笔记-5G模块(SIM8200、广和通FM160、移远RM500U)调试笔记

RK3588 CPU提供了丰富的外设接口,本文主要介绍通过usb3.0接口驱动5G模块来实现5g无线数据传输功能。在物联网和边缘计算领域,5G网络支持的高速率、低延时连接为应用带来了更多可能性。RK3588作为一款高性能SoC,适合用于5G联网应用。SIM8200广和通FM160和移远RM500U。在RK3588上调试5G模块可以为设备提供稳定的高速联网能力。本文介绍了如何配置和调试SIM8200、广和通FM160和移远RM500U模块,通过AT指令和QMI/MBIM工具实现5G数据连接。

flypig has a dream! 2669

Java编程题: 数组中出现次数超过一半的数字

数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 一种方法是,用HashMap记录数组中每个元素出现的次数,然后进行遍历,不过感觉下面的思路比较简单巧妙一些。 方法一: 数组中有一个数字出现的次数超过数组长度...

长不大的大灰狼 1010

28、基于图像快速序列视觉呈现(RSVP)的脑机接口特征提取与分类算法综述

本文综述了基于图像快速序列视觉呈现(RSVP)的脑机接口(BCI)中的特征提取与分类算法。RSVP技术通过快速连续呈现图像序列,结合脑电图(EEG)信号分析,实现对目标图像的识别和标记。文章详细介绍了RSVP实验的设计、EEG数据的采集与预处理,并探讨了低信噪比、维度灾难、重叠epoch和不平衡数据集等挑战。针对特征提取,讨论了有监督空间滤波方法(如CSP、xDAWN、LDA波束形成器)的原理和应用。在分类策略部分,涵盖了线性分类技术(如LDA、BLR、LR、SVM)和非线性分类方法(如MLP、CNN)。文

hh234的博客 336

实战封神!YOLOv7 轻量化部署全攻略:ONNX格式转换+TensorRT极致加速(速度直接提升3-5倍,精度无损)

部署核心链路,这是YOLO系列部署的最优解,速度提升3~5倍,精度无损;ONNX是桥梁:解决模型兼容性问题,简化后能去掉冗余节点,是TensorRT加速的前提;TensorRT是核心:NVIDIA显卡的极致加速引擎,FP16量化是速度与精度的最优平衡,无需手动配置,一键开启;轻量化终极组合YOLOv7-tiny + 416尺寸 + TensorRT FP16,速度提升5~8倍,满足所有实时检测场景;避坑核心:转换参数必加,推理尺寸必须一致,engine文件显卡专属。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 308

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

问题:数组中一个数字出现的次数超过了数组长度的一半,找出这个数字。 我这里给出的是只考虑了正常情况的算法,没有考虑数组无效,以及不符合次数超过数组长度一半的情况。 思路: (1)将数组排序(排序的原因是为了下面方便统计出次数) (2)排好序后,分别统计每个元素出现的次数,并对应记录相应的元素。 (3)找出次数最多的元素。 (补充,其实排好序后不需要统计次数了,应为这个数字出现的次数超过

hairongtian的专栏 3796

《时序分析、时序约束和时序收敛》专栏的说明与导航

《时序分析、时序约束和时序收敛》专栏的说明与导航(建议阅读)。

孤独的单刀 14万+

【算法】数组中出现次数超过一半的数字

算法练习~

qq_61862008的博客 745

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Java】数组中出现次数超过一半的数字

题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 这题思路挺简单的,用了双for直接解决 package 牛客; import java.lang.reflect.Array; import java.util.Arrays...

Bry'ce的博客 270

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java之数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现5次,超过数组长度的一半,因此输出2. 分析:有两种解法: 1.基于快速排序中的partition函数的O(n)算法。如果把这个数组排序,那么排序后的数组中间的数字一定是那个出现次数超过数组长度一半的数字。 2.根据数组特性,可以考虑遍历

qq_27291877的博客 665

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: 字符串的排列
下一篇: 最小的K个数
Fivesplus
博客等级 码龄12年 1粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值