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
.
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.
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.
Input: nums = [1,1,1,1,1], k = 0 Output: true
Input: nums = [0,1,0,1], k = 1 Output: true
1 <= nums.length <= 10^5
0 <= k <= nums.length
nums[i]
is0
or1
impl Solution {
pub fn k_length_apart(nums: Vec<i32>, k: i32) -> bool {
let mut prev_1 = -k - 1;
for i in 0..nums.len() {
if nums[i] == 1 {
if i as i32 - prev_1 <= k {
return false;
}
prev_1 = i as i32;
}
}
true
}
}