Friday, October 17, 2025
HomeData Modelling & AICheck if every pair of 1 in the array is at least...

Check if every pair of 1 in the array is at least K length apart from each other

Given a binary array and an integer K, check if every pair of 1 in the array is at least K length apart from each other. Return true if the condition holds, otherwise return false.

Examples: 

Input: arr = [1, 0, 0, 0, 1, 0, 0, 1, 0, 0], K = 2. 
Output: True 
Explanation: 
Every 1 in the array is at least K distance apart from each other.

Input: arr= [1, 0, 1, 0, 1, 1], K = 1 
Output: False 
Explanation: 
The fifth 1 and sixth 1 are not apart from each other. Hence, the output is false. 

 

Approach:
To solve the problem mentioned above we have to check the distance between each pair of adjacent 1. Find the first position of 1 then iterate through the rest of the array and increment distance if it’s 0 otherwise perform a check operation if the distance is less than k and reset the count to 0 again.
Below is the implementation of the above approach:
 

C++




// C++ implementation to Check if every pair of 1 in
// the array is at least K length from each other
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to check distance
bool kLengthApart(vector<int>& nums, int k)
{
    // Find first position of 1
    int pos = 0, count = 0;
 
    while (pos < nums.size() && nums[pos] == 0)
        pos++;
 
    // Iterate through the rest of array
    for (int i = pos + 1; i < nums.size(); i++) {
        // Increment distance if its 0
        if (nums[i] == 0)
            count++;
 
        // Check if the distance is less than k
        else {
            if (count < k)
                return false;
 
            // Reset count to 0
            count = 0;
        }
    }
 
    // Return the result
    return true;
}
 
// Driver code
int main()
{
    vector<int> nums = { 1, 0, 0, 0, 1, 0, 0, 1, 0, 0 };
    int k = 2;
 
    bool ans = kLengthApart(nums, k);
    if (ans == 1)
        cout << "True" << endl;
 
    else
        cout << "False" << endl;
 
    return 0;
}


Java




// Java implementation to check if
// every pair of 1 in the array is
// at least K length from each other
class Main{
     
// Function to check distance
public static boolean kLengthApart(int[] nums,
                                   int k)
{
     
    // Find first position of 1
    int pos = 0, count = 0;
 
    while (pos < nums.length && nums[pos] == 0)
        pos++;
 
    // Iterate through the rest of array
    for(int i = pos + 1; i < nums.length; i++)
    {
         
       // Increment distance if its 0
       if (nums[i] == 0)
           count++;
            
       // Check if the distance is less than k
       else
       {
           if (count < k)
               return false;
                
           // Reset count to 0
           count = 0;
       }
    }
     
    // Return the result
    return true;
}
 
// Driver Code
public static void main(String[] args)
{
    int[] nums = { 1, 0, 0, 0, 1,
                   0, 0, 1, 0, 0 };
    int k = 2;
    boolean ans = kLengthApart(nums, k);
     
    if (ans)
        System.out.println("True");
 
    else
        System.out.println("False");
}
}
 
// This code is contributed by divyeshrabadiya07


Python3




# Python3 implementation to check if
# every pair of 1 in the array is
# at least K length from each other
 
# Function to check distance
def kLengthApart(nums, k):
     
    # Find first position of 1
    pos = 0
    count = 0
     
    while (pos < len(nums) and nums[pos] == 0):
        pos += 1
         
    # Iterate through the rest of list
    for i in range(pos + 1, len(nums)):
         
        # Increment distance if its 0
        if nums[i] == 0:
            count += 1
             
        # Check if the distance is less than k
        else :
            if count < k:
                return False
                 
            # Reset count to 0
            count = 0
             
        # Return the result
    return True
     
# Driver Code
if __name__ == "__main__":
      
    nums = [ 1, 0, 0, 0, 1, 0, 0, 1, 0, 0 ]
    k = 2
     
    print(kLengthApart(nums, k))
 
# This code is contributed by rutvik_56


C#




// C# implementation to check if
// every pair of 1 in the array is
// at least K length from each other
using System;
 
class GFG{
     
// Function to check distance
public static bool kLengthApart(int[] nums,
                                int k)
{
     
    // Find first position of 1
    int pos = 0, count = 0;
 
    while (pos < nums.Length && nums[pos] == 0)
        pos++;
 
    // Iterate through the rest of array
    for(int i = pos + 1; i < nums.Length; i++)
    {
        
       // Increment distance if its 0
       if (nums[i] == 0)
           count++;
            
       // Check if the distance is
       // less than k
       else
       {
           if (count < k)
               return false;
            
           // Reset count to 0
           count = 0;
       }
    }
     
    // Return the result
    return true;
}
 
// Driver Code
public static void Main()
{
    int[] nums = { 1, 0, 0, 0, 1,
                   0, 0, 1, 0, 0 };
    int k = 2;
    bool ans = kLengthApart(nums, k);
     
    if (ans)
        Console.Write("True");
    else
        Console.Write("False");
}
}
 
// This code is contributed by chitranayal


Javascript




<script>
 
// JavaScript implementation to
// Check if every pair of 1 in
// the array is at least K length
// from each other
 
// Function to check distance
function kLengthApart(nums, k)
{
    // Find first position of 1
    var pos = 0, count = 0;
    var i;
    while (pos < nums.length && nums[pos] == 0)
        pos++;
 
    // Iterate through the rest of array
    for (i = pos + 1; i < nums.length; i++) {
        // Increment distance if its 0
        if (nums[i] == 0)
            count++;
 
        // Check if the distance is less than k
        else {
            if (count < k)
                return false;
 
            // Reset count to 0
            count = 0;
        }
    }
 
    // Return the result
    return true;
}
 
// Driver code
    var nums = [1, 0, 0, 0, 1, 0, 0, 1, 0, 0];
    var k = 2;
 
    var ans = kLengthApart(nums, k);
    if (ans == 1)
        document.write("True");
 
    else
        document.write("False");
 
</script>


Output: 

True

 

Time Complexity: O(n) 
Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Dominic
32361 POSTS0 COMMENTS
Milvus
88 POSTS0 COMMENTS
Nango Kala
6728 POSTS0 COMMENTS
Nicole Veronica
11892 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11954 POSTS0 COMMENTS
Shaida Kate Naidoo
6852 POSTS0 COMMENTS
Ted Musemwa
7113 POSTS0 COMMENTS
Thapelo Manthata
6805 POSTS0 COMMENTS
Umr Jansen
6801 POSTS0 COMMENTS