zoukankan      html  css  js  c++  java
  • 独一无二的出现次数【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)。

  • 相关阅读:
    datepicker防手动输入
    [ACM]Link-Cut Tree实现动态树初探
    STL priority_queue 优先队列 小记
    hihoCoder挑战赛1 毁灭者问题
    python编程技巧
    openstack horizon 学习(3) DataTable
    Upcasting, downcasting in JAVA
    SGU 145
    URAL 1003,1004
    自建物流的无人机实验(困难)
  • 原文地址:https://www.cnblogs.com/snail-gao/p/13890989.html
Copyright © 2011-2022 走看看