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。
您的j
运行时间是i+1
(incl)至length-1
(excl)。这是两个输入的空白范围。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++) {
这实际上将检查数组中的不同对。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句