(数组) 1207. 独一无二的出现次数 ——【Leetcode每日一题】

这篇具有很好参考价值的文章主要介绍了(数组) 1207. 独一无二的出现次数 ——【Leetcode每日一题】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

❓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 < = a r r . l e n g t h < = 1000 1 <= arr.length <= 1000 1<=arr.length<=1000
  • − 1000 < = a r r [ i ] < = 1000 -1000 <= arr[i] <= 1000 1000<=arr[i]<=1000

💡思路:哈希表

法一:直接使用哈希表

  • 首先使用哈希表记录每个数字的出现次数;
  • 随后再利用新的哈希表,统计不同的出现次数的数目。
  • 如果不同的出现次数的数目等于不同数字的数目,则返回 true,否则返回 false

法二:用数组来做哈希

  • 此时可以定义一个2001大小的数组 cnts ,存储每个数字的出现次数;
  • 再定义一个哈希表(数组)fre 用来记录频率是否重复出现过;
  • 如果之前出现过,返回 false; 否则将该频率记标为出现;

🍁代码:(Java、C++)

法一:直接使用哈希表
Java

class Solution {
    public boolean uniqueOccurrences(int[] arr) {
        Map<Integer, Integer> cnts = new HashMap<Integer, Integer>();
        for (int num : arr) {
            cnts.put(num, cnts.getOrDefault(num, 0) + 1);
        }
        Set<Integer> fre = new HashSet<Integer>();
        for (Map.Entry<Integer, Integer> cnt : cnts.entrySet()) {
            fre.add(cnt.getValue());
        }
        return fre.size() == cnts.size();
    }
}

C++

class Solution {
public:
    bool uniqueOccurrences(vector<int>& arr) {
        unordered_map<int, int> cnts;
        for(int num : arr){
            cnts[num]++;
        }
        unordered_set<int> fre;
        for(auto cnt : cnts){
            fre.insert(cnt.second);
        }
        return fre.size() == cnts.size();
    }
};

法二:用数组来做哈希
Java

class Solution {
    public boolean uniqueOccurrences(int[] arr) {
        int[] cnts = new int[2001]; // 统计数字出现的频率
        for (int num : arr) {
            cnts[num + 1000]++;
        }
        boolean[] fre = new boolean[1001]; // 看相同频率是否重复出现
        for (int cnt : cnts) {
            if (cnt != 0) {
                if(fre[cnt]) return false;
                else fre[cnt] = true;
            }
        }
        return true;
    }
}

C++

class Solution {
public:
    bool uniqueOccurrences(vector<int>& arr) {
        int cnts[2001] = {0}; // 统计数字出现的频率
        for (int num : arr) {
            cnts[num + 1000]++;
        }
        bool fre[1001] = {false}; // 看相同频率是否重复出现
        for (int cnt : cnts) {
            if (cnt) {
                if(fre[cnt]) return false;
                else fre[cnt] = true;
            }
        }
        return true;
    }
};
🚀 运行结果:

(数组) 1207. 独一无二的出现次数 ——【Leetcode每日一题】

🕔 复杂度分析:
  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为数组的长度。遍历原始数组需要 O ( n ) O(n) O(n) 时间,而遍历中间过程产生的哈希表又需要 O ( n ) O(n) O(n) 的时间。法二,需要数组内数值的范围所对应的空间。
  • 空间复杂度 O ( n ) O(n) O(n)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!文章来源地址https://www.toymoban.com/news/detail-477983.html

注: 如有不足,欢迎指正!

到了这里,关于(数组) 1207. 独一无二的出现次数 ——【Leetcode每日一题】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UUID算法:独一无二的标识符解决方案

    在分布式系统和大数据环境下,唯一标识符的生成和管理是一项关键任务。UUID(Universally Unique Identifier)算法应运而生,成为了解决重复数据和标识符冲突的有效工具。本文将探讨UUID算法的优势和劣势,分析其在分布式系统、大数据环境以及其他领域中的应用,同时给出Py

    2024年02月19日
    浏览(54)
  • 探索Java中的Set集合:独一无二的元素之旅

     在Java编程中,我们经常需要处理一组元素,并且确保其中没有重复的元素。为了满足这一需求,Java提供了一个强大的数据结构——Set集合。Set集合是一种无序且不允许重复元素的集合,提供了高效的去重和查找功能。本文将深入探索Java中的Set集合,介绍其基本概念、常见

    2024年02月16日
    浏览(47)
  • 【python】python小游戏——开心消消乐(源码)【独一无二】

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 基于 Pygame 的游戏程序,它实现了一个类

    2024年04月11日
    浏览(44)
  • 【python】python旅游网数据抓取分析(源码+论文)【独一无二】

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 每个爬虫针对特定的目标网站(去哪儿网

    2024年02月04日
    浏览(52)
  • 蛋糕店微信小程序,打造独一无二的在线订购体验

    在如今的移动互联网时代,微信小程序已经成为各行业的必备工具,帮助企业快速搭建自己的线上平台。对于蛋糕店来说,拥有一款专属的微信小程序将会给顾客带来全新的购物体验,提升店铺的知名度和销售额。 要打造一款独一无二的蛋糕店微信小程序,我们首先需要登录

    2024年02月14日
    浏览(237)
  • 【python】当当书籍数据抓取分析与可视化(代码+报告)【独一无二】

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 本项目旨在研究和分析当当网上的书籍信

    2024年02月04日
    浏览(53)
  • 【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 本项目包括四个核心部分:数据爬取、数

    2024年02月05日
    浏览(107)
  • 个性化纹身设计,Midjourney带你探索独一无二的艺术之美

    hello,大家好,欢迎回来。 在当今社会,纹身已经变得非常常见。 在寻求与众不同的个性化纹身时,你是否曾经为了找不到独特的设计而苦恼? 现在,Midjourney将为你打开一扇全新的艺术之门,引领你探索纹身设计的无穷魅力。 我们深知每一个纹身都承载着个人的故事和情感

    2024年02月22日
    浏览(51)
  • Java课堂|独一无二的事物(设计模式之单例模式)

    本文主要讲述 单例模式 ,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。 单例模式是23种设计模式中 创建型模式 的一种,通过单例模式的方法创建的类在当前进程或者线程中只有一个实例。单例模式有两种比较常见的实现方式: 饿汉式

    2024年02月07日
    浏览(43)
  • 【C++面向对象】C++餐厅点餐管理系统【独一无二】

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 使用c++编写一个餐厅点餐管理系统,主要功能如下: 客户点餐功

    2024年02月03日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包