1437.是否所有 1 都至少相隔 k 个元素

1437. Check If All 1's Are at Least Length K Places Away

警告
本文最后更新于 2022-10-07,文中内容可能已过时。
注意
点击标题绿色箭头可进入题目

给你一个由若干 01 组成的数组 nums 以及整数 k。如果所有 1 都至少相隔 k 个元素,则返回 True ;否则,返回 False

题解

通过0的数量判断

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Solution {
    public boolean kLengthApart(int[] nums, int k) {
        int sum = k;
        for(int i =0;i<nums.length;i++){
            if(nums[i] == 1){
                if(sum < k) return false;
                sum = 0;
            } else sum += 1;
        }
        return true;
    }
}

遍历

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class Solution {
    public boolean kLengthApart(int[] nums, int k) {
        int n = nums.length;
        int prev = -1;
        for (int i = 0; i < n; ++i) {
            if (nums[i] == 1) {
                if (prev != -1 && i - prev - 1 < k) {
                    return false;
                }
                prev = i;
            }
        }
        return true;
    }
}
0%