已经知道数组:int[] arr = {1, 4, 3, 4, 6, 6, 6, 8, 8, 9, 2, 8, 3};
//用HashMap,key作为数字,对应value作为出现次数
@Test
public void t1() {
int[] arr = {1, 1, 3, 5, 6, 6, 8, 8, 9, 2, 8, 3};
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < arr.length; i++) {
if (map.containsKey(arr[i])) {
map.put(arr[i], map.get(arr[i]) + 1);
} else {
map.put(arr[i], 1);
}
}
Integer maxCount = Collections.max(map.values());
Set<Integer> set = map.keySet();
int num = arr[0];
for (Integer i : set) {
if (map.get(i) == maxCount) {
num = i;
}
}
System.out.println("num:" + num + ",出现次数:" + maxCount);
}
//先对数组排序,创建一个数组存放对应位置的重复值
@Test
public void t2() {
int[] arr = {1, 1, 3, 5, 6, 6, 8, 8, 9, 2, 8, 3};
Arrays.sort(arr);//先对数组排序
int[] result = new int[arr.length];
int index = 0;
result[0] = 1;
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i + 1] > arr[i]) {
index = i + 1;
result[index] = 1;
} else {
result[index] = result[index] + 1;
}
}
int maxCount = 0;
int numIdex = 0;
for (int i = 0; i < result.length; i++) {
if (result[i] > maxCount) {
maxCount = result[i];
numIdex = i;
}
}
int num = arr[numIdex];
//
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(result));
System.out.println("出现次数最多的值:" + num + ",次数:" + maxCount);
}
//创建一个对应的数组,来存储目标数组的重复个数
@Test
public void t3() {
int[] arr = {1, 4, 3, 4, 6, 6, 6, 8, 8, 9, 2, 8, 8};
int[] countArr = new int[arr.length];
int countIndex = 0;
for (int i = 0; i < arr.length; i++) {
countArr[i] = 1;
int temp = arr[i];
for (int j = 0; j < arr.length; j++) {
if (i != j && temp == arr[j]) {
countArr[i] += 1;
}
}
if (countArr[i] > countArr[countIndex]) {
countIndex = i;
}
}
System.out.println(Arrays.toString(countArr));
System.out.println("countIndex:" + countIndex);
}
要求计算出现次数最多的数字和出现次数;