gpt4 book ai didi

java - 二维数组中最常见的元素。如何优化?

转载 作者:行者123 更新时间:2023-11-30 08:35:19 25 4
gpt4 key购买 nike

我有这个任务,找到 int[][] 数组中最常见的元素并打印重复的次数和次数。我解决了这个问题。

我的一个 friend 说有 4 个 for() 是个坏主意。所以我决定尝试优化它以删除一两个,但找不到办法。

这里是:

     int cnt, element = arr[0][0], numberRepeats = 0;//cnt-counter,what's the element ,how many times it's repeated
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {//those two for's are for the current element
cnt = 0;//counter is nullified
for (int j2 = i; j2 < arr.length; j2++) {
for (int k = 0; k < arr[j2].length; k++) {//and those two are the compared element
if (arr[i][j] == arr[j2][k]) {//if the current element is the same as the compared element,increase counter
cnt++;
}
}

if (cnt > numberRepeats) {//after the compared element is done comparing and the number of repeats of the current element is more then the lastly checked element
element = arr[i][j];//we get the element ,and how many times it's repeated
numberRepeats = cnt;
}
}
}
}

我能想到的唯一优化是从当前元素开始计数,直到结束。

请给我更多的想法。我能找到的所有答案都是针对一维数组的,而且它们都是几乎相同的代码。

最佳答案

您可以迭代整个数组并计算 map 中每个元素的出现次数。

Map<Integer, Integer> elementsCounts = new HashMap<>();
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
Integer count = elementsCounts.get(arr[i][j]])
if(count == null){
count = 0
}
elementsCounts.put(arr[i][j]], count+1)
}
}

现在它得到的只是在映射中找到具有最大值的键。

关于java - 二维数组中最常见的元素。如何优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38264317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com