1437. 是否所有 1 都至少相隔 k 个元素

题目

给你一个由若干 01 组成的数组 nums 以及整数 k。如果所有 1 都至少相隔 k 个元素,则返回 True ;否则,返回 False

示例1:

1
2
3
输入:nums = [1,0,0,0,1,0,0,1], k = 2
输出:true
解释:每个 1 都至少相隔 2 个元素。

示例2:

1
2
3
输入:nums = [1,0,0,1,0,1], k = 2
输出:false
解释:第二个 1 和第三个 1 之间只隔了 1 个元素。

示例3:

1
2
输入:nums = [1,1,1,1,1], k = 0
输出:true

示例4:

1
2
输入:nums = [0,1,0,1], k = 1
输出:true

提示:

  • 1 <= nums.length <= 10^5
  • 0 <= k <= nums.length
  • nums[i] 的值为 01

解法

解法一:

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public boolean kLengthApart(int[] nums, int k) {
int preIndex = -1;
int curIndex;
for (int i = 0;i < nums.length;i++) {
if (nums[i] == 1) {
// 如果当前数字为1
if (-1 == preIndex) {
preIndex = i;
} else {
curIndex = i;
int diff = curIndex - preIndex - 1;
if (diff < k) {
return false;
} else {
preIndex = curIndex;
}
}
}
}
return true;
}
0%