题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

A1:用算法类中的sort函数排序,中间的数有可能是出现次数超过数组长度一半的数,保存起来,然后遍历数组查看该数的个数,若出现次数大于数组长度的一半,则输出该数  ====> O(nlogn)

A2:用hash存储数和它出现的次数,若有数出现的次数大于数组长度的一半则输出 ====> O(n)

//先排序再查找 O(nlogn)

class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
if(numbers.empty())
{
return 0;
}
sort(numbers.begin(), numbers.end()); int length_mid = numbers.size() / 2;
int middle = numbers[length_mid]; int count = 0; // 出现次数
for(int i = 0;i < numbers.size(); ++i)
{
if(numbers[i] == middle)
{
++count;
}
} return (count > length_mid) ? middle : 0;
}
};

 

//map  O(n)

class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
if (numbers.empty())
{
return 0;
} int count = 0;
int length_mid = numbers.size() / 2;
map<int, int> m_map;
for(int i = 0; i < numbers.size(); i++)
{
count = ++m_map[numbers[i]];
if(count > length_mid)
{
return numbers[i];
}
}
return 0;
}
};

【剑指Offer】【数组】数组中出现次数超过一半的数字的更多相关文章

  1. [剑指Offer]39-数组中出现次数超过一半的数字(快排延申,找第k大数同理)

    题目链接 https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=13&tqId=11181&t ...

  2. Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)

    剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ...

  3. 剑指Offer - 九度1370 - 数组中出现次数超过一半的数字

    剑指Offer - 九度1370 - 数组中出现次数超过一半的数字2013-11-23 03:55 题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组 ...

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

    剑指Offer:数组中出现次数超过一半的数字[39] 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于这 ...

  5. 剑指Offer(二十八):数组中出现次数超过一半的数字

    剑指Offer(二十八):数组中出现次数超过一半的数字 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...

  6. 剑指 Offer 39. 数组中出现次数超过一半的数字 + 摩尔投票法

    剑指 Offer 39. 数组中出现次数超过一半的数字 Offer_39 题目描述 方法一:使用map存储数字出现的次数 public class Offer_39 { public int majo ...

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

    剑指 Offer 39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [ ...

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

    题目 剑指 Offer 39. 数组中出现次数超过一半的数字 思路1(排序) 因为题目说一定会存在超过数组长度一半的一个数字,所以我们将数组排序后,位于length/2位置的一定是众数 代码 clas ...

  9. 数组中出现次数超过一半的数字 牛客网 剑指Offer

    数组中出现次数超过一半的数字 牛客网 剑指Offer 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字 ...

  10. 【剑指Offer】数组中出现次数超过一半的数字 解题报告(Python)

    [剑指Offer]数组中出现次数超过一半的数字 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-inter ...

随机推荐

  1. eclipse打不开maven项目中的pom.xml

    1.问题描述 在eclipse中我双击打开maven项目中的pom.xml报错. 2.产生原因 正如报错中描述的那样"Failed to create the part's controls ...

  2. [python] 基于blind-watermark库添加图片盲水印

    blind-watermark是一个能够给图片添加/解析基于频域的数字盲水印的Python库.图像水印image watermark是指在图片里添加文本或图形,以标记图片的来源.但是图像水印会破坏原图 ...

  3. 使用Lighthouse更好推动项目性能优化,性能指标详解,优化方法,需要关注指标分析

    Lighthouse是什么---一种工具 Lighthouse 是一个开源的自动化工具,用来测试页面性能. 为什么要用Lighthouse----提升用户体验 Web性能可以直接影响业务指标,例如转化 ...

  4. flutter_swiper:Another exception was thrown: ScrollController attached to multiple scroll views.

    Another exception was thrown: ScrollController attached to multiple scroll views. 翻译一下:引发了另一个异常:Scro ...

  5. (23)go-micro微服务客户端开发(使用负载均衡)

    目录 一 main.go开发 二 客户端代码开发: 三 客户端测试功能 1.发送注册邮件 2.实现注册功能 3.查询用户功能 四 运行项目 五 最后 一 main.go开发 至此,咱们的项目服务端代码 ...

  6. Azure Terraform(十二)利用 Terraform 将文件上传到 Azure Blob Storage

    一,引言 本篇文章中,我门将学习如何利用 Terraform 将 文件以及文件夹上传到 Azure Blob Storage,这个对于我们来说很方便,可以将一些不重要的内容也存储在源代码管理工具中! ...

  7. 绝对路径和相对路径-file类的构造方法

    绝对路径和相对路径 路径:绝对路径:是一个完整的路径以盘符(c:,D:)开始的路径c:lla.txtC; llUserslitcastllIdeaProjects 1lshungyuan {\123. ...

  8. super与this关键字图解-Java继承的三个特点

    super与this关键字图解 父类空间优先于子类对象产生 在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身.目的在于子类对象中包含了其对应的父类空 间,便可以包含其父类的成员,如果父类成 ...

  9. 带你读AI论文丨S&P21 Survivalism: Living-Off-The-Land 经典离地攻击

    摘要:这篇文章属于系统分析类的文章,通过详细的实验分析了离地攻击(Living-Off-The-Land)的威胁性和流行度,包括APT攻击中的利用及示例代码论证. 本文分享自华为云社区<[论文阅 ...

  10. 12月14日内容总结——模板层之标签、自定义模板语法、母版(模版)的继承与导入、模型层前期准备知识点、ORM常用关键字

    目录 一.模板层之标签 分支结构if for循环 with(定义变量名) 二.自定义过滤器.标签及inclusion_tag(了解) 三.母版(模板)的继承与导入(重要) 四.模型层之前期准备 模型层 ...