import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param arr int整型一维数组
* @return bool布尔型
*/
public boolean uniqueOccurrences (int[] arr) {
// write code here
HashMap<Integer, Integer> count = new HashMap<>();
for (int a : arr) {
count.put(a, count.getOrDefault(a, 0) + 1);
}
HashSet<Integer> times = new HashSet<>();
for (int value : count.values()) {
if (!times.add(value)) {
return false;
}
}
return true;
}
}
用的是Java语言。
该题考察的知识点是哈希表和集合的使用。需要统计数组中每个数字出现的次数,并判断这些次数是否都是唯一的。
代码的文字解释如下:
- 在
Solution类中,定义一个名为uniqueOccurrences的方法,该方法接收一个整型数组arr作为参数,并返回一个布尔型值。 - 在
uniqueOccurrences方法内部,创建一个HashMap<Integer, Integer>类型的变量count,用于存储数字出现的次数。 - 使用
for-each循环遍历数组arr,并将每个数字作为键,将其出现次数作为值存储在count中。如果count已经存在该键,则通过getOrDefault()方法获取当前键的值并加 1,否则将当前键的值设为 1。 - 创建一个
HashSet<Integer>类型的变量times,用于存储已经出现过的次数。 - 再次使用
for-each循环遍历count的值集合,即每个数字出现的次数。 - 对于每个出现次数
value,通过add()方法将其插入到times中。如果插入失败(即已经存在相同的值),则说明有重复的次数,返回false。 - 如果循环结束后仍未出现重复的次数,说明所有出现次数均不相同,返回
true。

京公网安备 11010502036488号