Skip to content

Latest commit

 

History

History

1437

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

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:

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:

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

Related Topics:
Array

Solution 1.

// OJ: https://leetcode.com/problems/check-if-all-1s-are-at-least-length-k-places-away/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(1)
class Solution {
public:
    bool kLengthApart(vector<int>& A, int k) {
        int prev = -k - 1;
        for (int i = 0; i < A.size(); ++i) {
            if (A[i] == 0) continue;
            if (i - prev <= k) return false;  
            prev = i;
        }
        return true;
    }
};