gpt4 book ai didi

java - 给定一个整数数组 arr,编写一个函数,当且仅当数组中每个值出现的次数唯一时返回 true

转载 作者:行者123 更新时间:2023-12-02 09:24:00 26 4
gpt4 key购买 nike

import java.util.*;
class Solution {
public boolean uniqueOccurrences(int[] arr) {
HashMap<Integer,Integer> hash = new HashMap<>();
for(int i = 0;i<arr.length;i++){
if(hash.containsKey(arr[i])){
hash.put(arr[i],hash.get(arr[i])+1);
}else{
hash.put(arr[i],1);
}
}
for(int i = 0;i<arr.length;i++){
for(int j = i+1;j<arr.length-1;j++){
if(arr[i]!=arr[j] && hash.get(arr[i])==hash.get(arr[j])){
return false;
}
}
}
return true;
}
}

我的代码实际上在 1 个测试用例 [1,2] 上失败了。任何人都可以告诉我原因以及如何优化我的代码

最佳答案

您的i从0(含)到length(不含)。因此,当 length 为 2 时,就会得到 0 和 1。

您的 ji+1(含)运行到 length-1(不含)。对于两个输入来说这是一个空范围。 i+1 至少为 1,length-1 也是 1。由于 j 循环不运行,因此您不会找到任何匹配项。

这会更有意义:

for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {

这实际上会检查数组中的不同对。

关于java - 给定一个整数数组 arr,编写一个函数,当且仅当数组中每个值出现的次数唯一时返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58472416/

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