警告
本文最后更新于 2022-10-07,文中内容可能已过时。
给你一个由若干 0
和 1
组成的数组 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;
}
}
|