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.

Example 1:
file
Input: nums = [1,0,0,0,1,0,0,1], k = 2
Output: true
Explanation: Each of the 1s are at least 2 places away from each other.

Example 2:
file
Input: nums = [1,0,0,1,0,1], k = 2
Output: false
Explanation: The second 1 and third 1 are only one apart from each other.

Example 3:
Input: nums = [1,1,1,1,1], k = 0
Output: true

Example 4:
Input: nums = [0,1,0,1], k = 1
Output: true

Constraints:

  • 1 <= nums.length <= 10^5
  • 0 <= k <= nums.length
  • nums[i] is 0 or 1

Solution in python:

class Solution:
    def kLengthApart(self, nums: List[int], k: int) -> bool:
        i = 0
        j = 0
        while i < len(nums) and nums[i] != 1:
            i += 1
        i += 1
        while i < len(nums):
            while nums[i] != 1:
                i += 1
                j += 1
                if i == len(nums):
                    break
            else:
                if j < k:
                    return False
                else:
                    j = 0
            i += 1
        return True
最后修改日期: 2021年3月15日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。