题解 | #不同的体重# java
不同的体重
https://www.nowcoder.com/practice/4a6411ef749445e88baf7f93d1458505
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
。