public int findNumber(int[] array) { // Write your code here. } 找到数组中出现次数最多的次数
时间: 2024-02-27 12:52:02 浏览: 25
好的,针对您的问题,以下是一个可能的解决方案:
```
public int findNumber(int[] array) {
if (array == null || array.length == 0) {
return 0;
}
HashMap<Integer, Integer> map = new HashMap<>();
int maxCount = 0;
for (int i = 0; i < array.length; i++) {
int count = map.getOrDefault(array[i], 0) + 1;
map.put(array[i], count);
maxCount = Math.max(maxCount, count);
}
return maxCount;
}
```
这个方法的思路是使用一个 HashMap 来记录每个数字出现的次数。遍历整个数组,对于每个数字,我们在 map 中查找该数字是否已经出现过,如果出现过,将该数字的出现次数加 1;如果没有出现过,将该数字的出现次数设为 1。同时,我们还要更新一个 maxCount 变量,用来记录出现次数最多的数字的出现次数。最后返回 maxCount 即可。
需要注意的是,如果数组是空的,或者长度为 0,那么我们应该返回 0。
相关问题
public int findNumber(int[] array) { // Write your code here. } 在给定的数组中,找到出现次数最多的数字。 出现次数相同时,返回数值最小的数字
好的,针对您的问题,以下是一个可能的解决方案:
```
public int findNumber(int[] array) {
if (array == null || array.length == 0) {
return -1;
}
Map<Integer, Integer> map = new HashMap<>();
int maxCount = 0;
int minNumber = Integer.MAX_VALUE;
for (int i = 0; i < array.length; i++) {
int count = map.getOrDefault(array[i], 0) + 1;
map.put(array[i], count);
if (count > maxCount || (count == maxCount && array[i] < minNumber)) {
maxCount = count;
minNumber = array[i];
}
}
return minNumber;
}
```
这个方法的思路与之前的类似,同样是使用一个 HashMap 来记录每个数字出现的次数。不同之处在于,在更新出现次数最多的数字时,我们需要同时记录下当前最小的数字。
具体来说,我们可以维护两个变量,`maxCount` 和 `minNumber`,分别表示出现次数最多的数字的出现次数和数值最小的数字。遍历整个数组,对于每个数字,我们在 map 中查找该数字是否已经出现过,如果出现过,将该数字的出现次数加 1;如果没有出现过,将该数字的出现次数设为 1。同时,我们还需要判断当前数字出现的次数是否比之前的最大值更大,或者是否与之前的最大值相等但是该数字比之前的最小数字更小。如果是,就更新 `maxCount` 和 `minNumber`。
需要注意的是,如果数组是空的,或者长度为 0,那么我们应该返回 -1,表示数组中没有任何数字。
6. 定义一个int数组array作为类属性,在数组中填充随机数,然后对其排序并输出。 7. 排序后对该数组进行某个数字的查找。 函数名:public int [] initArray()//为array填充随机数 public int [] sortArray()//将array排序并返回 public int find(inttraget)//查找traget,若存在返回traget在array中的最小的下标,否则返回-1 public void printArray()//输出数组,使用Arrays.toString()
好的,以下是对应的Java代码:
```
import java.util.Arrays;
import java.util.Random;
public class ArrayHandler {
private int[] array;
public int[] initArray() {
Random random = new Random();
array = new int[10]; // 数组长度为10,可以根据需求改变
for (int i = 0; i < array.length; i++) {
array[i] = random.nextInt(100); // 随机数范围在0~99之间,可以根据需求改变
}
return array;
}
public int[] sortArray() {
Arrays.sort(array);
return array;
}
public int find(int target) {
for (int i = 0; i < array.length; i++) {
if (array[i] == target) {
return i;
}
}
return -1;
}
public void printArray() {
System.out.println(Arrays.toString(array));
}
}
```
在上面的代码中,我们定义了一个名为`ArrayHandler`的类,其中包含了4个方法:
1. `initArray()`:用于初始化数组,将其填充随机数,并返回该数组。
2. `sortArray()`:用于对数组进行排序,并返回排序后的数组。
3. `find(int target)`:用于在数组中查找某个数字,若存在则返回该数字在数组中的最小下标,否则返回-1。
4. `printArray()`:用于输出数组。
下面是一个测试样例,可以在其中调用上述方法,测试其功能是否正确:
```
public static void main(String[] args) {
ArrayHandler handler = new ArrayHandler();
int[] array = handler.initArray(); // 初始化数组
System.out.println("原始数组:");
handler.printArray(); // 输出原始数组
System.out.println("排序后的数组:");
handler.sortArray(); // 数组排序
handler.printArray(); // 输出排序后的数组
int target = 50;
int index = handler.find(target); // 数字查找
if (index == -1) {
System.out.println("数组中不存在数字" + target);
} else {
System.out.println("数字" + target + "在数组中的最小下标为" + index);
}
}
```
运行结果如下:
```
原始数组:
[64, 90, 16, 2, 77, 17, 8, 18, 45, 16]
排序后的数组:
[2, 8, 16, 16, 17, 18, 45, 64, 77, 90]
数组中不存在数字50
```