当前位置: 首页 > 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/349141.html

相关文章:

  • 建设网站的价格是多少可以推广的平台
  • 网站建设加工长春seo推广
  • 如何做网站平台网页搜索引擎
  • 巩义做网站优化赚钱平台
  • 谷歌网站建设免费文案素材网站
  • 网站建设的软件是哪个免费发布推广的网站
  • 北京网络网站建设武汉百度信息流广告
  • 做网站好还是网页好株洲seo推广
  • 北京网站优化流程宁波seo如何做推广平台
  • 网站图片用什么做的在线搜索资源
  • 网站图片3d显示效果今日新闻头条
  • 网站设计前景四年级新闻摘抄大全
  • 不花钱怎么做网站运营建立网站的几个步骤
  • 做网站哪家公司便宜营销策划案
  • 青岛百度网站排名网络公司取什么名字好
  • 梧州论坛 掌上红豆南宁正规的seo费用
  • wordpress 壁纸模板我赢网seo优化网站
  • 多语言网站建设推广适合seo优化的网站
  • 网上接工程活做的网站线上营销手段有哪些
  • 电商网站制作流程图百度网站客服电话
  • 德州市住房和城乡建设局网站刷排名seo
  • 基于b2c网站建设域名查询ip爱站网
  • 蝶山网站建设免费自己建网页
  • 软件技术专升本对口专业seo视频教程我要自学网
  • 高校资源网网站建设方案路由器优化大师
  • 17网站一起做网店睡衣天津seo推广优化
  • 建设一个公司网站多少钱外贸网站搭建
  • 杭州哪家公司可以做网站台州百度推广优化
  • 做公司网站协议书模板下载在线域名ip查询
  • 企业网站框架百度网盘网页