一、题目地址
https://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4?tpId=117
二、思路地址
三、具体代码
1、空间复杂度O(1),时间复杂度O(nlogn)
function IsContinuous(numbers)
{
//1、找最小值位置
let index = 0;
//2、数组排序
numbers.sort((a, b) => {
return a - b;
});
for(let i=0; i<numbers.length; i++) {
if(numbers[i] === 0) {
index++;
}else if(numbers[i] === numbers[i+1]) {//若有重复,直接返回false
return false;
}
}
return numbers[numbers.length - 1] - numbers[index] < 5;
}
module.exports = {
IsContinuous : IsContinuous
};
2、空间复杂度O(n),时间复杂度O(n)
// 时间复杂度O(n),空间复杂度O(n)
function IsContinuous(numbers)
{
let set = new Set();
let min = 15;
let max = -1;
for(let i=0; i<numbers.length; i++) {
if(numbers[i] === 0) continue;
max = Math.max(max, numbers[i]);
min = Math.min(min, numbers[i]);
if(set.has(numbers[i])) {
return false;
}
set.add(numbers[i]);
}
return max - min < 5;
}
module.exports = {
IsContinuous : IsContinuous
};