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

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:

https://assets.leetcode.com/uploads/2020/04/15/sample_1_1791.png

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:

https://assets.leetcode.com/uploads/2020/04/15/sample_2_1791.png

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^5
  • 0 <= k <= nums.length
  • nums[i] is 0 or 1

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
}

Calendar Jun 25, 2026
Edit Edit this page
Total visits:   You are visitor No.
中文