是否所有 1 都至少相隔 k 个元素
题目要求:
给你一个由若干 0 和 1 组成的数组 nums 以及整数 k。如果所有 1 都至少相隔 k 个元素,则返回 True ;否则,返回 False 。
解题思路:
- 构建一个数组用来保存1在原数组出现的位置;
- 计算构建的数组中的相邻元素的差值;
- 判断差值是否都符合条件,返回相应的内容。
题解代码:
详细步骤说明见注释!
class Solution:
def kLengthApart(self, nums: List[int], k: int) -> bool:
#计算数组长度
n = len(nums)
#创建一个数组用来保存nums中所有1的位置
nums1index = []
#遍历nums中的元素,将位置添加到新创建的数组中
for i in range(n):
if nums[i] == 1:
nums1index.append(i)
#计算新数组的长度
m = len(nums1index)
#计算新数组中的相邻元素之差,判断是否符合条件
for j in range(m-1):
if nums1index[j+1]-nums1index[j] < k+1:
return False
return True
我的leetcode
(“change--(看到这个词,你会想到你的缺点吗?)
”FIGHTING. . . .)