剑指offer---数组中出现次数超过一半的数字
来源:互联网 发布:纪子妃 知乎 编辑:程序博客网 时间:2024/06/08 18:40
题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
解析:
找到数组中的最大的数number,定义一个整型数组长度为s[number+1],初始化为0。扫描给定的数组numbers[0:length-1],s[numbers[i]]++,(s[j]记录的是数j在数组numbers中出现的次数),这样数组numbers中每个数出现的次数都被数组s记录下来,若s[r]>numbers.size()/2,则数r就是要找的出现次数超过一半的数。
代码1:
class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { if(numbers.size()==0)//空数组 return 0; int length=numbers.size(); int count=0; int max=numbers[0]; for(int i=1;i<length;i++){ if(max<numbers[i]) max=numbers[i]; } int s[max+1]; for(int r=0;r<max+1;r++) s[r]=0; for(int i=0;i<length;i++){ s[numbers[i]]++; } int j=0; for(;j<max+1;j++){ if(s[j]>length/2){ return j; } } return 0; }};
代码2:
class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { int length = numbers.size(); if (length == 0) return 0; sort(numbers.begin(), numbers.end());//排序 int max_num = 0; int num = 0; int val = numbers[0]; for (int i = 0; i < length; i++) { if (val == numbers[i]) { num++;//记录val连续出现次数 } else { max_num = num > max_num ? num : max_num;//当前出现最多的次数 if (max_num > length / 2) return val;//出现次数超过一半,找到 val = numbers[i];//还没找到出现次数超过一半的数 num = 1; } } max_num = num > max_num ? num : max_num;//前面没找到,最后几个数相等的情况 if (max_num > length / 2) return val; else return 0; }};
阅读全文
0 0
- 剑指offer--数组中出现次数超过一半的数字
- 《剑指offer》数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 【剑指Offer】数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字||剑指offer
- 剑指offer 数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- [剑指offer]数组中出现次数超过一半的数字
- 《剑指offer》-数组中出现次数超过一半的数字
- 剑指offer|数组中出现次数超过一半的数字
- 剑指offer-数组中出现次数超过一半的数字
- 《剑指offer》数组中出现次数超过一半的数字
- 剑指offer - 数组中出现次数超过一半的数字
- 剑指Offer:数组中出现次数超过一半的数字
- 剑指offer-数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 剑指offer 数组中出现次数超过一半的数字
- JavaWeb项目(发布)部署到云服务器 环境搭建 域名绑定项目 配置修改server.xml
- 记一次生产环境变更遇到ORA-00261和Database mount ID mismatch问题两例
- 过拟合
- 集合
- 分布式系统原则
- 剑指offer---数组中出现次数超过一半的数字
- spring的理解及与其它框架的区别
- 怎么理解CSS盒子模型?
- 第六课、C数据类型
- UVA10518——水矩阵+细节
- 安卓笔记(2)ui文字更加丰富多彩
- mysql alter 语句用法,添加、修改、删除字段等
- 【五】可变字符串与非可变字符串
- edit ech0:解决 Error:No suitable device found: no device found for connection "System eth0"