题目描述
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.
样例
遍历一下就行。
i进行跑,j来存之前的(item为1时index的)值
def kLengthApart(self, nums: List[int], k: int) -> bool:
j = -math.inf #用这个负无穷不用特判-1 # 实际上-101即可。数据水 最多就一百个数, k =100这种
for i, item in enumerate(nums):
if item:
if (i - j - 1) < k: return False
j = i
return True
换成-1也行
def kLengthApart(self, nums: List[int], k: int) -> bool:
j = -1
for i, item in enumerate(nums):
if item:
if j != -1 and (i - j - 1) < k: return False
j = i
return True
黑科技,实测只要不是Input输入的k就行 比$- k - 1$小即可 i - j < k + 1
这个第一次判断时不出错就行. 即i=0时,-j < k + 1判断为否(不执行) 后面j就存i = 0和后续的i值就变普通情况了.
def kLengthApart(self, nums: List[int], k: int) -> bool:
j = -10001
for i, item in enumerate(nums):
if item:
if i - j - 1 < k: return False
j = i
return True