Related Articles

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

• Last Updated : 20 May, 2021

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: [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 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 ``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

 ``
Output:

`True`

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up