面试题五 数组中出现次数超过一半的数字 时间为O(n)
2015-07-21 23:20
585 查看
也就是说 该数字出现的次数比其他所有数字出现次数的和还要多。 因此可以保存两个值,一个数字,一个次数。 遍历时 1、如果数字相同,count++ 2、如果count == 0 count = 1 number替换 3、如果不相同 count-- int main(){ int array[] = {3, 2, 3, 1, 3, 4}; int number = array[0], count = 0; for (int i = 1; i < 6; i++){ if (count == 0){ count = 1; number = array[i]; } if (array[i] != number){ count--; } else{ count++; } } cout << number << " " << count << endl; system("pause"); return 0; }
相关文章推荐
- 最全前端面试问题及答案总结 - trigkit4
- [刘未鹏]怎样花两年时间去面试一个人
- 2015072103 - 做单元测试是一种职业态度
- 2015072102 - 职业态度
- 阿里面试题目总结
- 黑马程序员——Java基础---面向对象
- java面试题目总结
- 黑马程序员——Java基础语法三
- 太凶残了:程序员的终极复仇方式
- 【面试题之概率部分】蓄水池抽样
- 黑马程序员——Java基础语法二
- 黑马程序员——Java基础语法一
- 程序员的学习方法
- 阿里巴巴IOS开发内推面试
- 为什么你只是个码农
- 第5章面试2--专家打分
- 剑指offer-面试题9.斐波拉契数列
- 剑指offer-面试题8.旋转数组的最小数字
- css前端笔试面试题
- 一个软件工程师在北京的反省