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 distancebool 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 codeint 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 Codepublic 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 distancedef 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 Codeif __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 Codepublic 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 distancefunction 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> |
True
Time Complexity: O(n)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



