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

蓝色大气企业网站模板自己怎么做一个网页

蓝色大气企业网站模板,自己怎么做一个网页,网络卖货怎么卖,网站开发数据库技术操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组非空,并且一定存在满足条件的数字(即一定有一个数字出现次数超…
  • 操作系统:ubuntu22.04
  • IDE:Visual Studio Code
  • 编程语言:C++11

题目描述

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组非空,并且一定存在满足条件的数字(即一定有一个数字出现次数超过一半)。

示例:

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

解法一:摩尔投票法(最优解,时间 O(n),空间 O(1))

这是本题的最佳解法,利用“抵消”思想。
🧠 核心思想:

  • 设一个候选数 candidate 和计数器 count;
  • 遍历数组:
    • 如果 count == 0,更新候选人为当前数;
    • 如果当前数等于候选人,count++;
      - 否则 count–;
  • 最终留下的候选人就是我们要找的“出现次数超过一半”的数字。

因为题目保证存在,所以不需要额外验证。

实现代码

#include <vector>int findMost( std::vector< int > nums )
{// 候选人int candidate = nums[ 0 ];// 投票计数器int count = 1;for ( int i = 1; i < nums.size(); ++i ){if ( nums[ i ] == candidate ){// 相同数字,票数加一count++;}else{// 不同数字,票数减一count--;// 票数归零,更换候选人if ( count == 0 ){candidate = nums[ i ];count     = 1;}}}// 因为题目保证存在,所以直接返回候选人即可return candidate;
}int main()
{std::vector< int > nums = { 1, 3, 2, 2, 2, 2, 6 };int count = findMost( nums );std::cout << count << std::endl;
}

运行结果

2

解法二:哈希表统计(次优解,时间 O(n),空间 O(n))

遍历数组,使用哈希表记录每个数字出现的次数,最后找到出现次数大于 n/2 的那个数字。
示例代码:


int findMost( std::vector< int >& nums )
{std::unordered_map< int, int > freq;for ( int num : nums ){freq[ num ]++;if ( freq[ num ] > nums.size() / 2 )return num;}return -1;  // 不会执行到这里(题目保证存在)
}

解法三:排序取中位数(时间 O(n log n),空间 O(1) 或 O(n))

将数组排序后,中间位置的元素一定是出现次数超过一半的数字(因为其至少占一半+1)。

int findMost( std::vector< int >& nums )
{std::unordered_map< int, int > freq;for ( int num : nums ){freq[ num ]++;if ( freq[ num ] > nums.size() / 2 )return num;}return -1;  // 不会执行到这里(题目保证存在)
}
http://www.dtcms.com/wzjs/170762.html

相关文章:

  • 做网站必须用tomcat网络推广引流是做什么的
  • 关于网站建设的书籍googleplay商店
  • 美国 做网站百度怎么推广网站
  • 自己做的网站 360不兼容重庆百度推广电话
  • 专门做照片的网站网站推广的几种方法
  • 设计干货很多的网站b2b平台有哪些
  • 网站备案资料 下载福州网站排名提升
  • 做网站建设培训排名优化软件
  • 美橙网站产品详情seo型网站
  • 外贸网站建设模板下载新产品推广方案怎么写
  • 做百度手机网站排名北京网站推广机构
  • 天津网站建设网站seo技术网
  • 服装平台网站有哪些推广营销
  • 一台云服务器可以做多少个网站网络营销属于什么专业类型
  • 网站开发与设计难嘛什么是搜索引擎推广
  • 专业网站建设品牌优化网站有哪些方法
  • 河北网站建设收益雅虎搜索
  • 做go分析的网站百度上怎么发布信息啊
  • 简述网站开发的基本流程图怎么查百度搜索排名
  • 深圳做响应式网站制作1小时快速搭建网站
  • 做网站维护有危险吗买了500元黑科技引流靠谱吗
  • 网站怎么做更新深圳网站建设微信开发
  • 做网站需要展示工厂么济南seo网站排名优化工具
  • 山东住房城乡建设厅官方网站网站推广优化排名公司
  • 汉沽做网站免费b站网站推广
  • 网站引擎友好性分析怎样免费推广自己的网站
  • 湖南常德今天最新消息宁波正规优化seo价格
  • 南京企业网站建设网站地址ip域名查询
  • 先做网站后备案吗优化品牌seo关键词
  • 上海市安全建设监理协会网站市场营销实际案例