1、题目
697. 数组的度 - 力扣(LeetCode) (leetcode-cn.com)
数组的度:数组里任一元素出现频数的最大值。
2、实现
(1)思路


(2)代码
/**
* @param {number[]} nums
* @return {number}
*/
var findShortestSubArray = function(nums) {
// 定义一个对象,用于存储各个数字出现的次数、第一次出现的位置下标、最后一次出现的位置下标
let obj = {};
// 第一次遍历数组,计算三种值
for(let i=0; i<nums.length; i++) {
if(!obj[nums[i]]) {
obj[nums[i]] = [1, i, i];
} else {
obj[nums[i]][0] += 1;
obj[nums[i]][2] = i;
}
}
// 求数组的度
let degree = 0;
for(const [counter, left, right] of Object.values(obj)) {
degree = Math.max(degree, counter);
}
// 求与数组度相同的最短子数组
let shortArrLength = [];
for(const [counter, left, right] of Object.values(obj)) {
if(counter === degree) {
shortArrLength.push(right - left +1);
}
}
return Math.min(...shortArrLength);
};3、参考:
js 遍历对象的几种方法 - 安莫寒 - 博客园 (cnblogs.com)
版权声明:本文为weixin_44109827原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。