《剑指offer》-数组中出现次数超过一半的数字
来源:互联网 发布:免费抠图软件 编辑:程序博客网 时间:2024/05/16 23:39
题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
解法:先排序,然后再从头开始统计个数。注意统计的时候从1开始。
class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { int len = numbers.size(); int half = len / 2; sort(numbers.begin(), numbers.end()); for(int i = 0; i < len; i++) { int count = 1; int newNum = numbers[i]; int j = 1; while((i+1) < len && newNum == numbers[i+1]) { count++; newNum = numbers[i+1]; ++i; j = 0; } if(j == 0) i--; //为了防止在while里面的多加1,退回去 if(count > half) return newNum; } return 0; }};
0 0
- 剑指offer--数组中出现次数超过一半的数字
- 《剑指offer》数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 【剑指Offer】数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字||剑指offer
- 剑指offer 数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- [剑指offer]数组中出现次数超过一半的数字
- 《剑指offer》-数组中出现次数超过一半的数字
- 剑指offer|数组中出现次数超过一半的数字
- 剑指offer-数组中出现次数超过一半的数字
- 《剑指offer》数组中出现次数超过一半的数字
- 剑指offer - 数组中出现次数超过一半的数字
- 剑指Offer:数组中出现次数超过一半的数字
- 剑指offer-数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 剑指offer 数组中出现次数超过一半的数字
- poj2352题解
- 使用 ormlite 操作已有数据库
- JUnit单元测试--JUnit简介
- 10267 - Graphical Editor
- csu 1329 一行盒子
- 《剑指offer》-数组中出现次数超过一半的数字
- Node.js简介
- KL 散度(从动力系统到推荐系统)
- 沼泽鳄鱼 矩阵乘法
- MFC嵌入浏览器框架CEF
- C++运算符重载
- Spring 与依赖注入
- [JZOJ3397]【GDOI2014模拟】雨天的尾巴
- 【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布