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

easy array

Problem

Given a binary array nums and an integer k, return true if all 1's are at least k places away from each other (i.e., there are at least k zeros between every two consecutive 1's); otherwise false.

Inputnums = [1,0,0,1,0,1], k = 2
Outputfalse
1's sit at indices 0, 3, 5. The gap 0→3 has 2 zeros (≥ k), but the gap 3→5 has only 1 zero (< k = 2), so the answer is false.

def k_length_apart(nums, k):
    prev = -1
    for i, v in enumerate(nums):
        if v == 1:
            if prev != -1 and i - prev - 1 < k:
                return False
            prev = i
    return True
function kLengthApart(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;
}
class Solution {
    public boolean kLengthApart(int[] nums, int k) {
        int prev = -1;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 1) {
                if (prev != -1 && i - prev - 1 < k) return false;
                prev = i;
            }
        }
        return true;
    }
}
bool kLengthApart(vector<int>& nums, int k) {
    int prev = -1;
    for (int i = 0; i < (int)nums.size(); i++) {
        if (nums[i] == 1) {
            if (prev != -1 && i - prev - 1 < k) return false;
            prev = i;
        }
    }
    return true;
}
Time: O(n) Space: O(1)