本文主要是介绍每日一题——LeetCode1437.是否所有1都至少相隔k个元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
方法一 两次遍历:
第一次遍历保存所有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=-1for(let i=0;i<nums.length;i++){if(nums[i]==1){if(prev!=-1 && i-prev-1<k){return false}prev=i}}return true
};
消耗时间和内存情况:
这篇关于每日一题——LeetCode1437.是否所有1都至少相隔k个元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!