方法一 两次遍历:
第一次遍历保存所有1的位置到res里,第二次遍历res检查是否所有相邻元素之间间隔都>=k
var kLengthApart = function(nums, k) {
let res=[]
for(let i=0;i<nums.length;i++){
if(nums[i]===1){
res.push(i)
}
}
for(let i=1;i<res.length;i++){
if(res[i]-res[i-1]-1<k) return false
}
return true
};
消耗时间和内存情况:
方法二 一次遍历:
记录当前的1的位置和上一个1出现的位置,检查两次位置间隔是否>=k
var kLengthApart = function(nums, k) {
let prev=-1
for(let i=0;i<nums.length;i++){
if(nums[i]==1){
if(prev!=-1 && i-prev-1<k){
return false
}
prev=i
}
}
return true
};
消耗时间和内存情况: