微软100题(74)数组中超过长度一半的数字
来源:互联网 发布:淘宝网大型儿童跳跳床 编辑:程序博客网 时间:2024/04/29 21:18
题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。
分析:这是一道广为流传的面试题,包括百度、微软和Google在内的多家公司都
曾经采用过这个题目。要几十分钟的时间里很好地解答这道题,
除了较好的编程能力之外,还需要较快的反应和较强的逻辑思维能力。
思路:遍历数组时候保存两个值,一个是数组中的数字,一个是次数。当遍历到下一个数字时候,如果和保存的数字相同,次数加一,如果不同,次数减一,当次数为零时,保存的数字要替换,并且置次数为1
bool CheckMoreThanHalf(int* number,int length,int result){int cnt =0;for (int i=0;i<length;++i){if(number[i]==result)cnt++;}if(cnt*2>length)return true;return false;}int MoreThanHalfNumber(int* number,int length){if(number==NULL || length <=0)return -1;int result = number[0];int times = 1;for (int i=1;i<length;++i){if(times==0){result = number[i];times = 1;}else if(number[i]==result)times++;elsetimes--;}if(!CheckMoreThanHalf(number,length,result))result = -1;return result;}
0 0
- 微软100题(74)数组中超过长度一半的数字
- 微软等数据结构+算法面试100题(23)--数组中超过出现次数超过一半的数字
- 数组中超过出现次数一半的数字 【微软面试100题 第七十四题】
- 找出数组中出现次数超过长度一半的数字
- 数组中出现次数超过长度一半的数字
- 74 数组中超过出现次数超过一半的数字
- 数组中一个数字出现的次数超过了数组长度的一半,找出这个数字
- 数组中一个数字出现的次数超过了数组长度的一半,找出这个数字
- 第七十四题(数组中超过出现次数超过一半的数字)
- 数组中超过一半的数字
- 数组中超过一半的数字
- 检查数组中超过一半的数字
- 数组中出现超过一半的数字
- 数组中数字超过一半的元素
- 数组中次数超过一半的数字
- 数组中超过一半的数字
- 数组中出现的次数超过数组长度的一半的数字
- 数组中有一个数字出现的次数超过数组长度的一半......
- Java线程(篇外篇):阻塞队列BlockingQueue
- 写给自己
- 学习Ocaml(2)---基础
- 获取到EditText里面的值
- mybatis对mysql进行分页
- 微软100题(74)数组中超过长度一半的数字
- Python基础(下)
- Android 生成带图片的二维码
- 第十四周 项目2-用文件保存的学生名单
- 从梯度场重建图像
- 内存对齐
- 黑马程序员——java 基础--面向对象
- 文件间的编译依存关系
- Android系统性能调优工具介绍