腾讯2015年应用开发笔试最后一题抽象--找到数组中一个超过数组长度一半的数字(java实现)
来源:互联网 发布:手机淘宝怎么取消授权 编辑:程序博客网 时间:2024/06/05 19:11
原题大概是一个现实情况,小明微信收到很多红包很开心,他发现有个红包金额出现的次数超过了总红包数的一半,求一种算法能快速找到这个金额。
抽象起来就是一个数组,存在一个数重复次数超过了数组长度的一半,找到这个数。
思想:用计数的方式表示删除两两个不同的元素,最后剩余的一定是要找的这个数字,时间复杂度为O(n),空间复杂度为O(1)
java程序如下:
public class Solution {boolean inputinvalid = false;public int moreThanHalfNum(int[] numbers,int length){if(numbers==null&&length==0){inputinvalid=true;return 0;}inputinvalid = false;int result = numbers[0];int times = 1;for(int i=1;i<length;i++){if(times==0){result=numbers[i];times=1;continue;}else if(result == numbers[i]){times++;}else{times--;}}//ensure the result appears more than half the lengthtimes = 0;for(int i=0;i<length;++i){if(result==numbers[i]){times++;}}if(times*2<=length){inputinvalid = true;return 0;}return result;}}
0 0
- 腾讯2015年应用开发笔试最后一题抽象--找到数组中一个超过数组长度一半的数字(java实现)
- 腾讯2016测试开发岗笔试题--数组中出现次数超过一半的数字
- java 找到数组中出现次数超过数组长度一半的那个数字
- 数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数。java实现
- 数组中一个数字出现的次数超过了数组长度的一半,找出这个数字
- 数组中一个数字出现的次数超过了数组长度的一半,找出这个数字
- java实现:数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字java实现
- 数组中有一个数字出现的次数超过数组长度的一半......
- 数组中有一个数字出现的次数超过数组长度的一半
- 数组中有一个数字出现的次数超过数组长度的一半
- 找到数组中出现次数超过一半的数字
- 找到数组中出现次数超过一半的数字
- 微软100题(74)数组中超过长度一半的数字
- 找出数组中出现次数超过长度一半的数字
- 数组中出现次数超过长度一半的数字
- 面试题29:找到数组中出现次数超过一半的数字(java)
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。
- poj 2699 最大流+枚举
- App跨平台开发方案与抉择
- ext4文件系统新特性
- 缓存、缓存算法和缓存框架简介
- 算法导论—二叉搜索树(BST)
- 腾讯2015年应用开发笔试最后一题抽象--找到数组中一个超过数组长度一半的数字(java实现)
- 264编码解码过程中,VBV (video buffer virifier)的作用
- javascript indexOf() 和lastIndexOf()方法比较
- DB2 IXF文件导入代码集不兼容浅析
- java之路——输入三个数进行排序
- 【Android】Windows批处理bat,执行adb shell指令
- 高需职位起底,高薪行业热门城市曝光
- UVA 562 Dividing coins (01背包基础)
- RichEdit改变行距