【剑指Offer】数组中出现次数超过一半的数字
来源:互联网 发布:早教老师软件 编辑:程序博客网 时间:2024/05/04 12:35
题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
算法描述
打擂算法:多的留下,少的走
先找出数最多的,然后找有多少个数,最后判断数目是否超过了一半,
θ(n)时间复杂度
代码实现
class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { int v,c=0; // 找出相同个数最多的那个数 for(int i=0;i<numbers.size();i++){ if(c==0||v==numbers[i]){ v=numbers[i]; c++; }else{ c--; } } c=0; // 计算有多少个相同的 for(int i=0;i<numbers.size();i++){ if(v==numbers[i]) c++; } return (c*2>numbers.size()?v:0); }};
1 0
- 剑指offer--数组中出现次数超过一半的数字
- 《剑指offer》数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 【剑指Offer】数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字||剑指offer
- 剑指offer 数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- [剑指offer]数组中出现次数超过一半的数字
- 《剑指offer》-数组中出现次数超过一半的数字
- 剑指offer|数组中出现次数超过一半的数字
- 剑指offer-数组中出现次数超过一半的数字
- 《剑指offer》数组中出现次数超过一半的数字
- 剑指offer - 数组中出现次数超过一半的数字
- 剑指Offer:数组中出现次数超过一半的数字
- 剑指offer-数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 剑指offer 数组中出现次数超过一半的数字
- 浅谈CSRF攻击方式
- java面试题六 float变量合法声明
- 前端初级开发笔试题——用js编写一个时钟实例
- linux--多线程--面试题 【转载】
- 欢迎使用CSDN-markdown编辑器
- 【剑指Offer】数组中出现次数超过一半的数字
- Chapter 1
- Win7下配置java环境变量
- 学编程需要攻克的8个障碍!
- 2015.9.20笔记
- Hbase错误ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
- Hive简介
- 升级xcode7问题汇总(持续更新)
- 【剑指Offer】最小的K个数