网站开发项目管理,wordpress怎么增加语言,做网站guangxiyanda,wordpress模板页题干
给你一个整数数组 arr#xff0c;请你帮忙统计数组中每个数的出现次数。
如果每个数的出现次数都是独一无二的#xff0c;就返回 true#xff1b;否则返回 false。 示例1#xff1a; 输入#xff1a;arr [1,2,2,1,1,3]
输出#xff1a;true
解释#xff1a;在该…题干
给你一个整数数组 arr请你帮忙统计数组中每个数的出现次数。
如果每个数的出现次数都是独一无二的就返回 true否则返回 false。 示例1 输入arr [1,2,2,1,1,3]
输出true
解释在该数组中1 出现了 3 次2 出现了 2 次3 只出现了 1 次。没有两个数的出现次数相同。 示例2 输入arr [1,2]
输出false 示例3 输入arr [-3,0,1,-3,1,1,1,-3,10,0]
输出true 提示 1 arr.length 1000-1000 arr[i] 1000 解题思路 看到有关统计次数的问题我们很容易第一时间想到使用哈希表来统计。本题就可以用HashMap来将每个数以及其出现次数统计要判断它们的出现次数是不是独一无二的可以利用HashSet集合不能有重复的元素这一特点将出现次数添加到HashSet集合中比较set集合和map集合的元素个数是否相等若相等则返回true若不想等则返回false。
AC代码
class Solution {public boolean uniqueOccurrences(int[] arr) {MapInteger, Integer occur new HashMapInteger, Integer();for (int x : arr) {occur.put(x, occur.getOrDefault(x, 0) 1);}//HashSet集合不能有重复的元素SetInteger times new HashSetInteger();for (Map.EntryInteger, Integer x : occur.entrySet()) {times.add(x.getValue());}return times.size() occur.size();}
}注意 MapInteger,IntegerMap是java中的接口Map.Entry是Map的一个内部接口表示Map中的一个实体一个key-value对。Map.put(K key,V value)将指定的值与此映射中的指定键关联。如果映射以前包含一个键的映射旧值将被指定的值替换。也就是说可以将数组的元素及其出现次数放进mapMap.getOrDefault()返回指定的键映射的值或 defaultValue如果这个Map不包含的键映射。就是说我可以获得它的value,但是如果一开始它没有值为空我就设置defaultValue为0开始Map.Entry返回一个 Set映射的视图包含在这个Map。该集合是由Map的支持所以对Map的变化反映在集合中反之亦然。设置支持元素的去除从Map中移除相应的映射通过 Iterator.remove Set.remove removeAll retainAll和 clear操作。它不支持 add或 addAll操作。 结果,映射中包含的映射的一个集合视图。也就是说我可以通过for (Map.EntryInteger, Integer x : occur.entrySet()) 循环遍历occur这个map类型的变量map.entrySet():返回包含Map映射的一个集合视图可以通过视图表示map中的元素然后搭配Entry将元素取出来只是Entry是一个接口表示实体而视图是虚拟的Map.Entry.getValue()返回对应于此项的值Set包含没有重复元素的集合。