image.png

常规解法

  1. public boolean uniqueOccurrences(int[] arr) {
  2. Map<Integer,Integer> map = new HashMap<>();
  3. for(int element:arr){
  4. map.put(element,map.getOrDefault(element,0)+1);
  5. }
  6. Set<Integer> set = new HashSet<>();
  7. for(int value:map.values()){
  8. set.add(value);
  9. }
  10. return set.size()==map.keySet().size();
  11. }

使用Lambda表达式与流式计算

  1. public boolean uniqueOccurrences(int[] arr) {
  2. Map<Integer, Integer> map = new HashMap<>();
  3. for(int i : arr)
  4. map.merge(i, 1, Integer::sum);
  5. int i1 = map.values().stream().distinct().mapToInt(i -> i).sum();
  6. int i2 = map.values().stream().mapToInt(i -> i).sum();
  7. return i1 == i2;
  8. }