标签:重复 als nta lang 相等 keyset 次数 boolean string
题目来源于力扣(LeetCode)
题目相关标签:哈希表
提示:
1 <= arr.length <= 1000
-1000 <= arr[i] <= 1000
遍历 arr 数组,用哈希表记录下每个数组元素出现的次数
遍历哈希表,通过 map.containsValue()
方法判断哈希表中的值是否存在重复
判断前,需要将本次遍历的值修改为 0
遍历 arr 数组,用哈希表记录下每个数组元素出现的次数
记录下哈希表中值的个数 size
通过 new HashSet<>(map.values())
来创建 Set 集合
因 Set 集合自带去重效果,最后判断 Set 集合的元素个数与 size 是否相等
相等即说明各数组元素出现的次数均不相同
public static boolean uniqueOccurrences(int[] arr) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < arr.length; i++) {
// 将数字与其出现的次数存储到 map 中
map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
}
Set<Integer> set = map.keySet();
for (Integer i : set) {
int j = map.get(i);
// 令 i 的值为 0
map.put(i, 0);
// 修改 i 的值后再判断 i 之前的值是否还存在,存在则说明重复
if (map.containsValue(j)) {
return false;
}
}
return true;
}
public static boolean uniqueOccurrences(int[] arr) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < arr.length; i++) {
// 将数字与其出现的次数存储到 map 中
map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
}
int size = map.values().size();
int setSize = new HashSet<>(map.values()).size(); // set集合去重
return size == setSize;
}
public static void main(String[] args) {
int[] arr = {1, 2, 2, 1, 1, 3}; // output: true
// int[] arr = {1, 2}; // output: false
// int[] arr = {-3, 0, 1, -3, 1, 1, 1, -3, 10, 0}; // output: true
boolean result = uniqueOccurrences(arr);
System.out.println(result);
}
标签:重复 als nta lang 相等 keyset 次数 boolean string
原文地址:https://www.cnblogs.com/zhiyin1209/p/13173617.html