题目描述

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
方法一:
思路:对数组进行排序,然后利用辅助变量j来标识位置。
class Solution {
public:int MoreThanHalfNum_Solution(vector<int> numbers) {sort(numbers.begin(),numbers.end());//排序数组int j=0;//辅助变量int cout=0;//记录出现的次数if(numbers.size()==1){return 1;//当数组只有一个元素的时候如[2];
        }for(int i=1;i<numbers.size();i++){//如果i与j相等if(numbers[i]==numbers[j]){cout=i-j+1;//计算i与j之间有多少个相同的数,如果比数组的一半大则输出if(cout>(numbers.size()/2)){return numbers[j];}}else{j=i;}}return 0;}
};

方法二:

思路:先把数组排序,排序完取数组的中间数字,这个中间数字要么是结果,要么是0。 例如[1,2,2,2,2,2,3,4,5]。这个数组返回的结果肯定就是为2。

class Solution {
public:int MoreThanHalfNum_Solution(vector<int> numbers) {sort(numbers.begin(),numbers.end());int k=numbers.size()/2;int middle =numbers[k];//中间数,此例为2int cout=0;//记录数for(int i=0;i<numbers.size();i++){if(numbers[i]==middle){cout++;}}return (cout>k)?middle:0;}
};

转载于:https://www.cnblogs.com/tianjiale/p/10756909.html

剑指_数组中出现次数超过一半的数字相关推荐

  1. python剑指offer数组中出现次数超过一半的数字

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

  2. 8. 返回数组里出现次数最多的数字_剑指offer 数组中出现次数超过一半的数字

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

  3. 剑指offer39:数组中出现次数超过一半的数字

    看到这题,我第一个想法就是,设置一个哈希表,然后统计一下每个数字的出现次数就好了,不过这样需要空间消耗O(n),时间上的复杂度应该是O(n).不过这样能行吗,题目中没有给我数字范围,怎么设置数组大小呢 ...

  4. 剑指offer-数组中出现次数超过一半的数字

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

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

    [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 文章目录 [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 一.摩尔投票法 一.摩尔投票法 核心理 ...

  6. 剑指offer——面试题29:数组中出现次数超过一半的数字

    剑指offer--面试题29:数组中出现次数超过一半的数字 Solution1: 20180902日整理 注意几点: 1.若下一个数字和我们之前保存的数字相同,则次数 +1 2.若下一个数字和我们之前 ...

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

    剑指 Offer 39. 数组中出现次数超过一半的数字https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban ...

  8. 剑指offer:面试题39. 数组中出现次数超过一半的数字

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

  9. 【剑指offer-Java版】29数组中出现次数超过一半的数字

    数组中出现次数超过一半的数字 两种思路: 思路一:由于出现次数超过一半,所以如果对这个数组进行划分之后无论如何,位于数组下标 n/2的数字就是出现次数超过一半的数 所以问题就转换为了求划分一次之后 位 ...

最新文章

  1. 在C语言中以编程的方式获取函数名
  2. vm虚拟远程部署windows驱动
  3. JavaScript学习总结(3)——JavaScript函数(function)
  4. 360度全面抵御黑客攻击的新型芯片来了!
  5. 分享DXperience免费汉化下载
  6. 使用永恒之蓝漏洞攻击电脑
  7. 金山词霸 2009 专业版
  8. 在读服务器端的备份说明文件错误,3dmax保存文件时出错,提示“无法创建备份文件”的原因和解决方法...
  9. C++11线程中的几种锁
  10. windows远程会话已断开连接,因为访问被拒绝导致许可证存储的创建失败。请使用提升的权限运行远程桌面客户端—解决方法
  11. 读书笔记: 《亿级流量网站架构核心技术》(开涛的那本)
  12. 算法开启队列转栈武魂
  13. 计算机键盘重复,电脑怎么设置键盘重复延迟和重复速度?
  14. 一文了解三种3D视觉技术
  15. 获得“网管师”资格证书,开启新的网管职业生涯
  16. 对接亚马逊 SP-API(Amazon Selling Partner API) 第六章:Fulfillment Inbound 模块
  17. mysql关于case when的用法举例
  18. tools1.0.2
  19. stm32 薄膜键盘原理_6.4 STM32F103ZET独立按键功能深入剖析(神舟III号)
  20. 自定义Qt Designer插件

热门文章

  1. Android的开发
  2. python使用ctype中”OSError: [WinError 193] %1 不是有效的 Win32 应用程序“的解决办法
  3. facerec = dlib.face_recognition_model_v1()面部识别器用法
  4. Linux 常用小技巧
  5. Redis报错解决The TCP backlog setting of 511 cannot be enforced和This will create latency and memory usage
  6. 如何解决数据丢失问题
  7. win10系统的qq无网络连接网络连接到服务器,Win10系统下误报无法连接internet该怎么办?新手速看...
  8. K8s deployments的故障排查可视化指南
  9. nginx内置变量 大全
  10. 怎么在手机上下载python模块_python下载模块然后怎么安装