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

网站建设手机版模板免费发布友链

网站建设手机版模板,免费发布友链,网站栏目及内容,网站的图形拖拽验证码怎么做的剑指 Offer 39. 数组中出现次数超过一半的数字 难度:easy\color{Green}{easy}easy 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: …

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

难度:easy\color{Green}{easy}easy


题目描述

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

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2

限制:

1<=数组长度<=500001 <= 数组长度 <= 500001<=数组长度<=50000

注意:本题与主站 169 题相同:https://leetcode-cn.com/problems/majority-element/

  • 腾讯视频后端的算法题,要求空间复杂度为 O(1)O(1)O(1)

算法

(摩尔投票法)

设输入数组 nums 的众数为 x ,数组长度为 n

  • 推论一: 若记 众数 的票数为 +1 ,非众数 的票数为 −1 ,则一定有所有数字的 票数和 >0

  • 推论二: 若数组的前 a 个数字的 票数和 =0 ,则 数组剩余 (n−a) 个数字的 票数和一定仍 >0 ,即后 (n−a) 个数字的 众数仍为 x
    在这里插入图片描述

算法流程:

  • 初始化: 票数统计 votes = 0 , 众数 x
  • 循环: 遍历数组 nums 中的每个数字 num
  • 当 票数 votes 等于 0 ,则假设当前数字 num 是众数;
  • num = x 时,票数 votes 自增 1 ;当 num != x 时,票数 votes 自减 1
  • 返回值: 返回 x 即可;

复杂度分析

  • 时间复杂度O(n)O(n)O(n),其中 nnn 是数组的长度。

  • 空间复杂度 : O(1)O(1)O(1),只需要 vote 常量

C++ 代码

class Solution {
public:int majorityElement(vector<int>& nums) {int vote = 0, x = 0;for (auto num : nums) {if (vote == 0) x = num;if (num == x) {vote += 1;}else {vote -= 1;}}return x;}
};

http://www.ysxn.cn/news/401.html

相关文章:

  • 什么不属于网站推广软件域名估价
  • 安化建设局网站全国十大跨境电商排名
  • 政府网站建设 强化考评问责公司网页怎么制作
  • 网站做提示框辽宁网站建设
  • 电商网站项目经验介绍必应搜索国际版
  • 淘宝店铺网站策划书免费关键词搜索工具
  • 江苏建设工程招标网官方网站大数据精准营销
  • 免费网站建设网站免费做推广的网站
  • 昆明网站建设哪家最好做公司网站
  • 创新的购物网站建设中小企业网站优化
  • 北京南站最新消息渠道推广费用咨询
  • 新洲建设局网站营销服务机构
  • 茂名网站建设服务如何进行网络营销
  • 广州网站推广多少钱深圳百度搜索排名优化
  • 北京网站建设公司电扬推广引流
  • 如何用flash做网站站长之家下载
  • 可以自己做安卓app的网站刷推广链接的网站
  • 沧州哪里可以做网站青岛seo
  • 做网站建设公司怎么样网络销售怎么样
  • 代理做网站seo外包公司哪家好
  • 网站建设工作职责说明书手机端百度收录入口
  • 在百度怎么做网站温州最好的seo
  • 集团网站建设服务软文推广怎么写
  • 银川市住房和城乡建设网站狼雨seo网站
  • 怎样用jsp做网站 新手教程福州seo推广服务
  • 深圳高端网站定制公搜索引擎大全排行榜
  • 旅行社网站设计方案黄冈便宜的网站推广怎么做
  • 网页无法访问打不开页面如何解决seo入门培训教程
  • 网站做三级等保费用友情链接怎么设置
  • 建设商城网站制作企业网站制作多少钱