Java得到数组中最有效的元素和下标
时间:2011-02-07 csdn博客 赵学庆
先看代码
import java.util.Arrays;
/**
* 得到数组中最有效的元素和下标.<br>
* 最有效的只出现频率超过长度一半的数据。
*
* @author 赵学庆 www.java2000.net
*/
public class MyTest {
public static void main(String[] args) {
int[] values = new int[] { 5, 3, 5, -5, 5, 0, 5 };
int maxValue = getMax(values);
if (maxValue > Integer.MIN_VALUE) {
System.out.println("Number=" + maxValue);
for (int i = 0; i < values.length; i++) {
if (values[i] == maxValue) {
System.out.print(i + " ");
}
}
} else {
System.out.println("没有找到");
}
}
public static int getMax(int[] values) {
int[] nums = Arrays.copyOf(values, values.length);
Arrays.sort(nums);
int number = Integer.MIN_VALUE;
int count = 0;
int numbertemp = Integer.MIN_VALUE;
int counttemp = 0;
for (int num : nums) {
if (num == numbertemp) {
// 增加当前
counttemp++;
} else {
// 判断是否比前一个大
if (counttemp > count) {
number = numbertemp;
count = counttemp;
}
// 设置当前
numbertemp = num;
counttemp = 1;
}
}
// 判断是否比前一个大
if (counttemp > count) {
number = numbertemp;
count = counttemp;
}
if (1.0 * count / nums.length > 0.5) {
return number;
}
return Integer.MIN_VALUE;
}
}
运行结果
Number=5
0 2 4 6
|