前端算法-独一无二的出现次数

简介: 前端算法-独一无二的出现次数

题目

给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false

输入:arr = [1,2,2,1,1,3]
输出:true
解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。

题解

先声明一个flag变量代表了最后返回出去的结果,默认是false,根据题意要求我们需要确认当前数组中每个数值出现的次数都是独一无二的,所以先对数据出现次数进行统计,声明一个map变量,它是一个Map数据结构,我们将arr变量出来里面的数值出现的次数全部放在map变量中去统计,然后使用循环出参arr变量,在循环中使用Map数据结构的has方法进行判断当前的循环中的值是否在map变量中,如果在则通过Map数据结构的get方法获取到当前值进行+1,然后在使用Map数据结构的set方法对修改后的值进行更新,如果没有循环的值不存在map变量中,则把当前的值作为key,value设置为1,因为时第一次出现的,value是出现的次数,我们声明一个set变量,它是一个Set数据结构,利用它有去重的特性,我们去循环map变量,将map变量中的value值通过Set数据结构的add方法添加到set变量中,然后判断当前set变量的长度和map变量的长度是否相等,如过相等则将flag变量改为true,如果不相等则不对flag变量做任何操作,最后将flag返回出去即可

/**
 * @param {number[]} arr
 * @return {boolean}
 */
var uniqueOccurrences = function(arr) {
            let flag = false;
            const map = new Map();
            for (const item of arr) {
                if (map.has(item)) {
                    let total = map.get(item) + 1;
                    map.set(item, total);
                } else {
                    map.set(item, 1);
                }
            }
            const set = new Set();
            for (let [key, value] of map) {
                set.add(value)
            }
            if (set.size == map.size) {
                flag = true;
            }
            return flag;
};

坚持努力,无惧未来!

相关文章
|
2天前
|
前端开发 算法
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
|
4天前
|
移动开发 算法 前端开发
前端算法之堆排序
前端算法之堆排序
15 1
|
4天前
|
算法 前端开发
前端算法之快速排序
前端算法之快速排序
14 0
|
4天前
|
算法 前端开发 搜索推荐
前端算法之归并排序
前端算法之归并排序
12 0
|
3天前
|
缓存 算法 前端开发
前端开发者必知的缓存淘汰策略:LRU算法解析与实践
前端开发者必知的缓存淘汰策略:LRU算法解析与实践
|
4天前
|
算法 前端开发
前端算法之基数排序
前端算法之基数排序
11 1
|
4天前
|
算法 前端开发 搜索推荐
前端算法之桶排序
前端算法之桶排序
7 1
|
4天前
|
存储 算法 前端开发
前端算法之计数排序
前端算法之计数排序
12 1
|
4天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
1天前
|
算法
m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长
MATLAB 2022a仿真实现了LDPC码的性能分析,展示了不同码长对纠错能力的影响。短码长LDPC码收敛快但纠错能力有限,长码长则提供更强纠错能力但易陷入局部最优。核心代码通过循环进行误码率仿真,根据EsN0计算误比特率,并保存不同码长(12-768)的结果数据。
19 9
m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长