1437. Check If All 1’s Are at Least Length K Places Away #
Problem #
Given an array nums of 0s and 1s and an integer k, return True if all 1’s are at least k places away from each other, otherwise return False.
Example 1:

Input: nums = [1,0,0,0,1,0,0,1], k = 2
Output: true
Explanation: Each of the 1s are at least 2 places away from each other.
Example 2:

Input: nums = [1,0,0,1,0,1], k = 2
Output: false
Explanation: The second 1 and third 1 are only one apart from each other.
Example 3:
Input: nums = [1,1,1,1,1], k = 0
Output: true
Example 4:
Input: nums = [0,1,0,1], k = 1
Output: true
Constraints:
1 <= nums.length <= 10^50 <= k <= nums.lengthnums[i]is0or1
Problem Summary #
Given an array nums consisting of 0s and 1s and an integer k. If all 1s are separated by at least k elements, return True; otherwise, return False.
Solution Ideas #
- Easy problem. Scan the array once. When encountering a 1, compare it with the index of the previous 1. If the distance between them is less than k, return false. If it is greater than or equal to k, update the index and continue the loop. After the loop ends, output true.
Code #
package leetcode
func kLengthApart(nums []int, k int) bool {
prevIndex := -1
for i, num := range nums {
if num == 1 {
if prevIndex != -1 && i-prevIndex-1 < k {
return false
}
prevIndex = i
}
}
return true
}