zoukankan      html  css  js  c++  java
  • 1207. 独一无二的出现次数『简单』

    题目来源于力扣(LeetCode

    一、题目

    1207. 独一无二的出现次数

    题目相关标签:哈希表

    提示:

    • 1 <= arr.length <= 1000
    • -1000 <= arr[i] <= 1000

    二、解题思路

    2.1 哈希表

    1. 遍历 arr 数组,用哈希表记录下每个数组元素出现的次数

    2. 遍历哈希表,通过 map.containsValue() 方法判断哈希表中的值是否存在重复

      判断前,需要将本次遍历的值修改为 0

    2.2 哈希表 + Set 去重

    1. 遍历 arr 数组,用哈希表记录下每个数组元素出现的次数

    2. 记录下哈希表中值的个数 size

    3. 通过 new HashSet<>(map.values()) 来创建 Set 集合

    4. 因 Set 集合自带去重效果,最后判断 Set 集合的元素个数与 size 是否相等

    5. 相等即说明各数组元素出现的次数均不相同

    三、代码实现

    3.1 哈希表

    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;
    }
    

    3.2 哈希表 + Set 去重

    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;
    }
    

    四、执行用时

    4.1 哈希表

    4.2 哈希表 + Set 去重

    五、部分测试用例

    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);
    }
    
  • 相关阅读:
    POI导出word
    idea 右键无java class选项
    从接口输出日志中提取用例
    Java 注解
    从输出日志中提取接口的入参和返回做为用例导入到excel中
    苹果绿RGB值
    YAML详解
    Linux grep命令
    MySQL DATE_FORMAT() 函数
    sql server 备份还原
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/13173617.html
Copyright © 2011-2022 走看看