• 独一无二的出现次数【1207】


    给你一个整数数组 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

    使用Map方式

    思路:

    使用Map统计每个元素的出现个数,把统计好的元素个数的值进行去重,比对map和去重后长度是否相同,相同则返回true
    小技巧:HashMap的key值不存在重复的原理就是使用set的方式去重
    

    代码:

    class Solution {
        public boolean uniqueOccurrences(int[] arr) {
    
            boolean result = false;
            Map<Integer,Integer> map = new HashMap();
    
            for(int i = 0;i < arr.length; i++){
                int key = arr[i];
               // map.put(key, map.getOrDefault(key, 0) + 1);
                if(map.containsKey(key)){
                    Integer value = map.get(key);
                    map.put(key , ++value);
                }else{
                    map.put(key, 1);
                }
            }
            Set<Integer> set = new HashSet();
            for(int key : map.keySet()){
                set.add(map.get(key));
            }
            return map.size() == set.size();
            //return map.size() == new HashSet<>(map.values()).size();
        }
    }
    

    复杂度分析:

    • 时间复杂度O(N),其中 NN 为数组的长度。遍历原始数组需要 O(N) 时间,而遍历中间过程产生的哈希表又需要 O(N) 的时间。

    • 空间复杂度:O(N)。

  • 相关阅读:
    redis-cluster
    Mycat-主从结构的准备
    Mycat-多实例的搭建
    MSC添加shard节点
    MongoDB -MSC集群的部署
    MySQL知识-redis实例
    MySQL知识-MySQL不同版本多实例
    #Linux学习# 用户和用户组管理
    #Linux学习# 软件包管理
    #Linux学习# 文本编辑器vim
  • 原文地址:https://www.cnblogs.com/snail-gao/p/13890989.html
Copyright © 2020-2023  润新知