数组中出现次数超过一半的数字
来源:互联网 发布:java项目开发视频云盘 编辑:程序博客网 时间:2024/06/15 23:54
题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
利用一个map,key保存数组中元素的值,value中保存出现的次数,当某个元素的出现次数大于数组长度的一半,则是要找的数。
class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { int n = numbers.size(); map<int, int> m; //出现的次数 int count; for(int i = 0; i < n; i++){ count = ++m[numbers[i]]; if(count > n/2) return numbers[i]; } return 0; //如果没有找到返回0 }};
思路2:
先对数组排序,位于中间的值就是超过数组长度一半的值
比如: 1 2 3 3 3 4 5中间值3就是出现次数最多的
class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers){ int n = numbers.size(); if(n == 0) return 0; sort(numbers.begin(),numbers.end());//排序 int mid = numbers[n/2]; //取中间的数 int count = 0; //出现次数 for(int i = 0; i < n; i++){ if(numbers[i] == mid) count++; //计算出现次数 } return (count > n/2) ? mid : 0; //判断是否出现次数超过数组一半 }};
阅读全文
0 0
- 数组中超过出现次数超过一半的数字
- 74.数组中超过出现次数超过一半的数字
- 74 数组中超过出现次数超过一半的数字
- 【数组4】数组中出现次数超过一半的数字
- 数组4:数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过长度一半的数字
- 2-数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字[算法]
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过一半的数字--百度
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 寻找数组中出现次数超过一半的数字
- 面试训练数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 排列(暴力穷举)
- 51Nod-1238-最小公倍数之和 V3
- 【Android笔记-3】启动活动的最佳写法
- Android图片压缩尺寸和质量
- Android PopupWindow怎么合理控制弹出位置(showAtLocation)
- 数组中出现次数超过一半的数字
- 全排列及相关扩展算法(三)——利用中介数求排列在字典序排位算法
- cocos2d-x包括3.14.1版本之后的安卓移植
- Android自定义View之popupwindow进阶封装:高仿ios “item动画弹出”效果的popupwindow。
- 像素着色器入门(龙书简单总结,DirectX 3D 9)
- 一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
- 浙江中医药大学暑期训练测试赛十 英雄无敌3(2) 数学公式
- spring核心容器 spring container 详解
- PAT 乙级 1042.字符统计(20)