Leetcode 1437.是否所有 1 都至少相隔 k 個元素
1 題目描述(Leetcode題目鏈接)
給你一個由若干 0 和 1 組成的數組 nums 以及整數 k。如果所有 1 都至少相隔 k 個元素,則返回 True ;否則,返回 False 。
輸入:nums = [1,0,0,0,1,0,0,1], k = 2
輸出:true
解釋:每個 1 都至少相隔 2 個元素。
提示:
- 1 <= nums.length <= 10^5
- 0 <= k <= nums.length
- nums[i] 的值爲 0 或 1
2 題解
算出兩個相鄰1之間距離的最小值與k比較
class Solution:
def kLengthApart(self, nums: List[int], k: int) -> bool:
dis = float("inf")
if 1 not in nums: return True
pre = nums.index(1)
for i in range(nums.index(1) + 1, len(nums)):
if nums[i] == 1:
dis = min(dis, i - pre - 1)
pre = i
return dis >= k