持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情。
题目描述
给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。
如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。
来源:力扣(LeetCode)
- 示例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
思路分析
据题意可知,给出的一个数组arr是一个整数数组;首先我们先要统计出数组中每个数组出现的次数,将这些次数放在一个数组中,接着判断出数组是否有重复的元素,若是有就直接return false,若是没有重复的元素就return true;
接下来就是如何来判断是否有重复的元素了;
(1)我们知道js中有个set的数据结构,set的has方法,可以判断某个元素是否在set中,若是有就返回true,若是没有就返回false;
(2)也可以使用使用数组,数组有一个incluedes方法,也是可以判断某个元素是否在此数组中,若是有则放回true,若是没有就返回false;
统计数组中元素出现的次数,可以先声明一个对象hash;循环数组,以数组的元素作为对象的键,出现的次数作为值,若是对象有这个值了就加一,若是没有就加一个。
AC代码
let arr = [1,2,2,1,1,3]
function solution(arr) {
let hash = {};
for( let i = 0; i<arr.length; i++) {
if(hash[arr[i]]) {
hash[arr[i]] = hash[arr[i]] + 1;
}else{
hash[arr[i]] = 1;
}
}
console.log(hash)
let s = new Set();
for(let key in hash) {
if(s.has(hash[key])) {
console.log(false)
}else{
s.add(hash[key]);
}
}
console.log(true)
}
solution(arr)åç