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语言。

该题考察的知识点是哈希表和集合的使用。需要统计数组中每个数字出现的次数,并判断这些次数是否都是唯一的。

代码的文字解释如下:

  1. Solution类中,定义一个名为uniqueOccurrences的方法,该方法接收一个整型数组arr作为参数,并返回一个布尔型值。
  2. uniqueOccurrences方法内部,创建一个HashMap<Integer, Integer>类型的变量count,用于存储数字出现的次数。
  3. 使用 for-each 循环遍历数组arr,并将每个数字作为键,将其出现次数作为值存储在 count 中。如果 count 已经存在该键,则通过 getOrDefault() 方法获取当前键的值并加 1,否则将当前键的值设为 1。
  4. 创建一个 HashSet<Integer> 类型的变量 times,用于存储已经出现过的次数。
  5. 再次使用 for-each 循环遍历 count 的值集合,即每个数字出现的次数。
  6. 对于每个出现次数 value,通过 add() 方法将其插入到 times 中。如果插入失败(即已经存在相同的值),则说明有重复的次数,返回 false
  7. 如果循环结束后仍未出现重复的次数,说明所有出现次数均不相同,返回 true