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

做网站的励志故事东莞人社小程序

做网站的励志故事,东莞人社小程序,建设网站要服务器吗,网页制作基础课件数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 假设数组非空,并且一定存在满足条件的数字。 思考题: 假设要求只能使用 O(n) 的时间和额外 O(1) 的空间,该怎么做呢&#xff1f…

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


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

假设数组非空,并且一定存在满足条件的数字。

思考题

  • 假设要求只能使用 O(n) 的时间和额外 O(1) 的空间,该怎么做呢?
数据范围

数组长度 [ 1 , 1000 ] [1,1000] [1,1000]

样例
输入:[1,2,1,1,3]输出:1
**算法思路 **

** 摩尔投票算法(Moore Voting Algorithm)  **

  1. 初始化:维护一个候选值 val 和计数器 cnt,初始时 val 为任意值(如 -1),cnt 为 0。
  2. 遍历数组
    • 如果 cnt 为 0,则将当前数字 x 设为候选值 val,并设置 cnt = 1
    • 如果当前数字 x 等于候选值 val,则 cnt 加 1。
    • 如果当前数字 x 不等于候选值 val,则 cnt 减 1。
  3. 返回结果:遍历结束后,val 即为出现次数超过一半的数字。
**关键点: **
  • 摩尔投票算法的核心思想是 “抵消”。出现次数超过一半的数字,最终一定会保留在 val 中,因为其他数字的出现次数总和不足以完全抵消它。
  • 该算法假设输入数组 一定存在 出现次数超过一半的数字。如果题目不保证这一点,需要额外验证步骤(但本题已保证)。
指标说明
时间复杂度O(n)只需遍历数组一次,n 为数组长度。
时间复杂度O(1)只使用了常数级别的额外空间(valcnt)。

class Solution {
public:int moreThanHalfNum_Solution(vector<int>& nums) {int val = -1, cnt = 0;for(auto x : nums){if(!cnt) val = x, cnt = 1;else {if(val == x) cnt ++;else cnt --;}}return val;}
};
http://www.dtcms.com/a/464151.html

相关文章:

  • 网站开发属于哪个板块的百度q3财报减亏170亿
  • 网站开发源代码修改wordpress视频下载
  • 毕业设计资料网站有哪些应用商店下载安装
  • 如何查找网站所有页面怎样做自己的视频网站
  • 网站w3c标准wordpress侧栏插件
  • 新手学做网站下载网页传奇大全
  • 长春南关网站建设想学网站建设方向的研究生
  • 网站建设的现状和趋势十堰网站建设_网站制作_软件开发_网店培训 优易
  • 能免费做网站吗CP网站开发制作H5
  • 800元建网站试用网站开发
  • 网络营销导向的企业网站建设的要求安徽省卫生计生网站医共体建设
  • 做外贸业务去哪些网站建筑课堂首页
  • 网站项目名称ueeshop外贸建站公司
  • 网站平台怎么做素材网站推广方案
  • 图片分享网站源码高端的食品行业网站开发
  • 官方网站免费建设昆山建设局网站
  • 哪些网站可以兼职做设计asp网站路径
  • 如何给网站加引导页wordpress小型店商城
  • 哪家做网站的公司东莞 骏域网站建设
  • 深圳个性化建网站服务商模具机械设备东莞网站建设
  • 福州大型网站建设淘宝联盟 网站怎么做
  • 扬州整站seo网站做cdn需要注意什么
  • 个人网站备案拍照WordPress自定义登录页面
  • 怎么建立网站的流程贴吧乱码链接怎么使用
  • 腾讯云主机做网站认证网站所有权要添加代码
  • 运城做网站要多少钱假山怎么制作 教程
  • 深圳餐饮网站建设网站怎么做图片动态图片不显示不出来
  • 吃的网站要怎么做的西宁整站优化
  • 厦门网站设计网站系统繁忙怎么办
  • 做网站的相关教程wordpress主题中的文件