求数组中出现次数超过数组长度一半的元素
2014-03-28 19:48
274 查看
思想比较简单:
1、选定一个元素,作为出现次数超过一半的元素a,计次数i为1
2、依次与后续元素比较,若存在相等元素则i+1,反之i-1
3、若i==0,令当前元素为a,重复步骤1
1、选定一个元素,作为出现次数超过一半的元素a,计次数i为1
2、依次与后续元素比较,若存在相等元素则i+1,反之i-1
3、若i==0,令当前元素为a,重复步骤1
private static int halfNumber(int[] array) { if (array == null || array.length == 0) { return 0; } int element = 0, times = 0; for (int i = 0; i < array.length; i++) { if (times == 0) { times++; element = array[i]; } else if (element == array[i]) { times++; } else { times--; } } return element; }
相关文章推荐
- Java实现——求整数数组中出现次数超过数组长度一半的元素
- Java实现 找出数组中出现次数超过数组长度一半的元素
- 在一个整型数组中有一个元素的出现次数超过了数组长度的一半,试设计一个 在时间上尽可能高效的算法,找出这个元素。
- 找出整数数组中出现次数超过数组长度一半的元素(Java)
- 找出数组中出现次数超过数组长度一半的元素
- 找出数组中出现次数超过数组长度一半的元素—-腾讯
- 每日一题:求数组中出现次数超过一半的元素
- 22.数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果
- 程序员面试题目总结--数组(三)【旋转数组的最小数字、旋转数组中查找指定数、两个排序数组所有元素中间值、数组中重复次数最多的数、数组中出现次数超过一半的数】
- 找出数组中出现次数超过数组长度一半的数字
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 数组中有一个数字出现的次数超过数组长度的一半......
- 【c语言】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
- PHP实现找出数组中出现次数超过数组长度一半的数字算法示例
- 找出数组中出现次数超过数组长度一半的数
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- 数组中一个数字出现的次数超过了数组长度的一半,找出这个数字
- 数组中出现次数超过长度一半的数字
- 查找数组中出现次数超过数组长度一半的数字
- 求数组中出现次数超过一半的元素(《编程之美》寻找水贴王问题)C代码