Posted on by Kalkicode
Code Hash

# Largest subarray with equal number of 0s and 1s

Here given code implementation process.

``````/*
Java program
Largest subarray with equal number of 0s and 1s
*/
import java.util.HashMap;
public class SubArraySum
{
// This function are displaying given array elements
public void display(int[] arr, int size)
{
for (int i = 0; i < size; ++i)
{
System.out.print("  " + arr[i]);
}
System.out.print("\n");
}
// Find the subarray of equal number of 0s and 1s
public void zeroSumSubarray(int[] arr, int n)
{
// Display given array elements
System.out.print("\n  Array :");
display(arr, n);
int front = -1;
int tail = -1;
HashMap < Integer, Integer > result = new HashMap < Integer, Integer > ();
int sum = 0;
int i = 0;
// Execute loop through by size of array elements
for (i = 0; i < n; ++i)
{
if (arr[i] == 1)
{
sum += 1;
}
else if (arr[i] == 0)
{
sum -= 1;
}
else
{
// When array contains another number
return;
}
if (sum == 0)
{
front = i + 1;
tail = i;
}
if (result.containsKey(sum + n))
{
if (front < i - result.get(sum + n))
{
front = i - result.get(sum + n);
tail = i;
}
}
else
{
result.put(sum + n, i);
}
}
if (tail == -1)
{
System.out.print("None");
}
else
{
System.out.print("  Front " + (tail - front + 1) + " Tail " + tail);
}
}
public static void main(String[] args)
{
// Case 1
// Define the array of (0,1) elements
int[] arr1 = {
1 , 0 , 1 , 1 , 0 , 1 , 1 , 1 , 1 , 0 , 0 , 0
};
int n = arr1.length;
// Case 2
// Define the array of (0,1) elements
int[] arr2 = {
1 , 0 , 1 , 1 , 1 , 1 , 0 , 1 , 1 , 0 , 0 , 1 , 1
};
n = arr2.length;
}
}``````

#### Output

``````  Array :  1  0  1  1  0  1  1  1  1  0  0  0
Front 4 Tail 11
Array :  1  0  1  1  1  1  0  1  1  0  0  1  1
Front 5 Tail 10``````
``````// Include header file
#include <iostream>
#include <unordered_map>
using namespace std;

class SubArraySum
{
public:
// This function are displaying given array elements
void display(int arr[], int size)
{
for (int i = 0; i < size; ++i)
{
cout << "  " << arr[i];
}
cout << "\n";
}
// Find the subarray of equal number of 0s and 1s
void zeroSumSubarray(int arr[], int n)
{
// Display given array elements
cout << "\n  Array :";
this->display(arr, n);
int front = -1;
int tail = -1;
unordered_map < int, int > result ;
int sum = 0;
int i = 0;
// Execute loop through by size of array elements
for (i = 0; i < n; ++i)
{
if (arr[i] == 1)
{
sum += 1;
}
else if (arr[i] == 0)
{
sum -= 1;
}
else
{
// When array contains another number
return;
}
if (sum == 0)
{
front = i + 1;
tail = i;
}
if (result.find(sum + n) != result.end())
{
if (front < i - result[sum + n])
{
front = i - result[sum + n];
tail = i;
}
}
else
{
result[sum + n] = i;
}
}
if (tail == -1)
{
cout << "None";
}
else
{
cout << "  Front " << (tail - front + 1) << " Tail " << tail;
}
}
};
int main()
{
// Case 1
// Define the array of (0,1) elements
int arr1[] =
{
1 , 0 , 1 , 1 , 0 , 1 , 1 , 1 , 1 , 0 , 0 , 0
};
int n = sizeof(arr1) / sizeof(arr1[0]);
// Case 2
// Define the array of (0,1) elements
int arr2[] =
{
1 , 0 , 1 , 1 , 1 , 1 , 0 , 1 , 1 , 0 , 0 , 1 , 1
};
n = sizeof(arr2) / sizeof(arr2[0]);
return 0;
}``````

#### Output

``````  Array :  1  0  1  1  0  1  1  1  1  0  0  0
Front 4 Tail 11
Array :  1  0  1  1  1  1  0  1  1  0  0  1  1
Front 5 Tail 10``````
``````// Include namespace system
using System;
using System.Collections.Generic;
/*
C# program
Largest subarray with equal number of 0s and 1s
*/
public class SubArraySum
{
// This function are displaying given array elements
public void display(int[] arr, int size)
{
for (int i = 0; i < size; ++i)
{
Console.Write("  " + arr[i]);
}
Console.Write("\n");
}
// Find the subarray of equal number of 0s and 1s
public void zeroSumSubarray(int[] arr, int n)
{
// Display given array elements
Console.Write("\n  Array :");
display(arr, n);
int front = -1;
int tail = -1;
Dictionary < int, int > result = new Dictionary < int, int > ();
int sum = 0;
int i = 0;
// Execute loop through by size of array elements
for (i = 0; i < n; ++i)
{
if (arr[i] == 1)
{
sum += 1;
}
else if (arr[i] == 0)
{
sum -= 1;
}
else
{
// When array contains another number
return;
}
if (sum == 0)
{
front = i + 1;
tail = i;
}
if (result.ContainsKey(sum + n))
{
if (front < i - result[sum + n])
{
front = i - result[sum + n];
tail = i;
}
}
else
{
}
}
if (tail == -1)
{
Console.Write("None");
}
else
{
Console.Write("  Front " + (tail - front + 1) + " Tail " + tail);
}
}
public static void Main(String[] args)
{
// Case 1
// Define the array of (0,1) elements
int[] arr1 = {
1 , 0 , 1 , 1 , 0 , 1 , 1 , 1 , 1 , 0 , 0 , 0
};
int n = arr1.Length;
// Case 2
// Define the array of (0,1) elements
int[] arr2 = {
1 , 0 , 1 , 1 , 1 , 1 , 0 , 1 , 1 , 0 , 0 , 1 , 1
};
n = arr2.Length;
}
}``````

#### Output

``````  Array :  1  0  1  1  0  1  1  1  1  0  0  0
Front 4 Tail 11
Array :  1  0  1  1  1  1  0  1  1  0  0  1  1
Front 5 Tail 10``````
``````<?php
/*
Php program
Largest subarray with equal number of 0s and 1s
*/
class SubArraySum
{
// This function are displaying given array elements
public	function display( & \$arr, \$size)
{
for (\$i = 0; \$i < \$size; ++\$i)
{
echo "  ". \$arr[\$i];
}
echo "\n";
}
// Find the subarray of equal number of 0s and 1s
public	function zeroSumSubarray( & \$arr, \$n)
{
// Display given array elements
echo "\n  Array :";
\$this->display(\$arr, \$n);
\$front = -1;
\$tail = -1;
\$result = array();
\$sum = 0;
\$i = 0;
// Execute loop through by size of array elements
for (\$i = 0; \$i < \$n; ++\$i)
{
if (\$arr[\$i] == 1)
{
\$sum += 1;
}
else if (\$arr[\$i] == 0)
{
\$sum -= 1;
}
else
{
// When array contains another number
return;
}
if (\$sum == 0)
{
\$front = \$i + 1;
\$tail = \$i;
}
if (array_key_exists(\$sum + \$n, \$result))
{
if (\$front < \$i - \$result[\$sum + \$n])
{
\$front = \$i - \$result[\$sum + \$n];
\$tail = \$i;
}
}
else
{
\$result[\$sum + \$n] = \$i;
}
}
if (\$tail == -1)
{
echo "None";
}
else
{
echo "  Front ". (\$tail - \$front + 1) ." Tail ". \$tail;
}
}
}

function main()
{
// Case 1
// Define the array of (0,1) elements
\$arr1 = array(1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0);
\$n = count(\$arr1);
// Case 2
// Define the array of (0,1) elements
\$arr2 = array(1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1);
\$n = count(\$arr2);
}
main();``````

#### Output

``````  Array :  1  0  1  1  0  1  1  1  1  0  0  0
Front 4 Tail 11
Array :  1  0  1  1  1  1  0  1  1  0  0  1  1
Front 5 Tail 10``````
``````/*
Node Js program
Largest subarray with equal number of 0s and 1s
*/
class SubArraySum
{
// This function are displaying given array elements
display(arr, size)
{
for (var i = 0; i < size; ++i)
{
process.stdout.write("  " + arr[i]);
}
process.stdout.write("\n");
}
// Find the subarray of equal number of 0s and 1s
zeroSumSubarray(arr, n)
{
// Display given array elements
process.stdout.write("\n  Array :");
this.display(arr, n);
var front = -1;
var tail = -1;
var result = new Map();
var sum = 0;
var i = 0;
// Execute loop through by size of array elements
for (i = 0; i < n; ++i)
{
if (arr[i] == 1)
{
sum += 1;
}
else if (arr[i] == 0)
{
sum -= 1;
}
else
{
return;
}
if (sum == 0)
{
front = i + 1;
tail = i;
}
if (result.has(sum + n))
{
if (front < i - result.get(sum + n))
{
front = i - result.get(sum + n);
tail = i;
}
}
else
{
result.set(sum + n, i);
}
}
if (tail == -1)
{
process.stdout.write("None");
}
else
{
process.stdout.write("  Front " + (tail - front + 1) + " Tail " + tail);
}
}
}

function main()
{
// Case 1
// Define the array of (0,1) elements
var arr1 = [1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0];
var n = arr1.length;
// Case 2
// Define the array of (0,1) elements
var arr2 = [1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1];
n = arr2.length;
}
main();``````

#### Output

``````  Array :  1  0  1  1  0  1  1  1  1  0  0  0
Front 4 Tail 11
Array :  1  0  1  1  1  1  0  1  1  0  0  1  1
Front 5 Tail 10``````
``````#
#   Python 3 program
#   Largest subarray with equal number of 0s and 1s

class SubArraySum :
#  This function are displaying given list elements
def display(self, arr, size) :
i = 0
while (i < size) :
print("  ", arr[i], end = "")
i += 1

print(end = "\n")

#  Find the sublist of equal number of 0s and 1s
def zeroSumSubarray(self, arr, n) :
#  Display given list elements
print("\n  Array :", end = "")
self.display(arr, n)
front = -1
tail = -1
result = dict()
sum = 0
i = 0
#  Execute loop through by size of list elements
while (i < n) :
if (arr[i] == 1) :
sum += 1

elif(arr[i] == 0) :
sum -= 1
else :
return

if (sum == 0) :
front = i + 1
tail = i

if (sum + n) in result.keys() :
if (front < i - result.get(sum + n)) :
front = i - result.get(sum + n)
tail = i

else :
result[sum + n] = i

i += 1

if (tail == -1) :
print("None", end = "")
else :
print("  Front ", (tail - front + 1) ," Tail ", tail, end = "")

def main() :
#  Case 1
#  Define the list of (0,1) elements
arr1 = [1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0]
n = len(arr1)
#  Case 2
#  Define the list of (0,1) elements
arr2 = [1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1]
n = len(arr2)

if __name__ == "__main__": main()``````

#### Output

``````  Array :   1   0   1   1   0   1   1   1   1   0   0   0
Front  4  Tail  11
Array :   1   0   1   1   1   1   0   1   1   0   0   1   1
Front  5  Tail  10``````
``````#
#   Ruby program
#   Largest subarray with equal number of 0s and 1s

class SubArraySum
#  This function are displaying given array elements
def display(arr, size)
i = 0
while (i < size)
print("  ", arr[i])
i += 1
end

print("\n")
end

#  Find the subarray of equal number of 0s and 1s
def zeroSumSubarray(arr, n)
#  Display given array elements
print("\n  Array :")
self.display(arr, n)
front = -1
tail = -1
result = Hash.new
sum = 0
i = 0
#  Execute loop through by size of array elements
while (i < n)
if (arr[i] == 1)
sum += 1
elsif(arr[i] == 0)
sum -= 1
else
#  When array contains another number
return
end
if (sum == 0)
front = i + 1
tail = i
end
if (result.key?(sum + n))
if (front < i - result[sum + n])
front = i - result[sum + n]
tail = i
end

else
result[sum + n] = i
end

i += 1
end

if (tail == -1)
print("None")
else
print("  Front ", (tail - front + 1) ," Tail ", tail)
end

end

end

def main()
#  Case 1
#  Define the array of (0,1) elements
arr1 = [1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0]
n = arr1.length
#  Case 2
#  Define the array of (0,1) elements
arr2 = [1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1]
n = arr2.length
end

main()``````

#### Output

``````  Array :  1  0  1  1  0  1  1  1  1  0  0  0
Front 4 Tail 11
Array :  1  0  1  1  1  1  0  1  1  0  0  1  1
Front 5 Tail 10``````
``````import scala.collection.mutable._;
/*
Scala program
Largest subarray with equal number of 0s and 1s
*/
class SubArraySum
{
// This function are displaying given array elements
def display(arr: Array[Int], size: Int): Unit = {
var i: Int = 0;
while (i < size)
{
print("  " + arr(i));
i += 1;
}
print("\n");
}
// Find the subarray of equal number of 0s and 1s
def zeroSumSubarray(arr: Array[Int], n: Int): Unit = {
// Display given array elements
print("\n  Array :");
this.display(arr, n);
var front: Int = -1;
var tail: Int = -1;
var result : HashMap[Int,Int] = HashMap();
var sum: Int = 0;
var i: Int = 0;
// Execute loop through by size of array elements
while (i < n)
{
if (arr(i) == 1)
{
sum += 1;
}
else if (arr(i) == 0)
{
sum -= 1;
}
else
{
// When array contains another number
return;
}
if (sum == 0)
{
front = i + 1;
tail = i;
}
if (result.contains(sum + n))
{
if (front < i - result.get(sum + n).get)
{
front = i - result.get(sum + n).get;
tail = i;
}
}
else
{
}
i += 1;
}
if (tail == -1)
{
print("None");
}
else
{
print("  Front " + (tail - front + 1) + " Tail " + tail);
}
}
}
object Main
{
def main(args: Array[String]): Unit = {
var task: SubArraySum = new SubArraySum();
// Case 1
// Define the array of (0,1) elements
var arr1: Array[Int] = Array(1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0);
var n: Int = arr1.length;
// Case 2
// Define the array of (0,1) elements
var arr2: Array[Int] = Array(1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1);
n = arr2.length;
}
}``````

#### Output

``````  Array :  1  0  1  1  0  1  1  1  1  0  0  0
Front 4 Tail 11
Array :  1  0  1  1  1  1  0  1  1  0  0  1  1
Front 5 Tail 10``````
``````/*
Swift 4 program
Largest subarray with equal number of 0s and 1s
*/
class SubArraySum
{
// This function are displaying given array elements
func display(_ arr: [Int], _ size: Int)
{
var i: Int = 0;
while (i < size)
{
print("  ", arr[i], terminator: "");
i += 1;
}
print(terminator: "\n");
}
// Find the subarray of equal number of 0s and 1s
func zeroSumSubarray(_ arr: [Int], _ n: Int)
{
// Display given array elements
print("\n  Array :", terminator: "");
self.display(arr, n);
var front: Int = -1;
var tail: Int = -1;
var result = [Int: Int]();
var sum: Int = 0;
var i: Int = 0;
// Execute loop through by size of array elements
while (i < n)
{
if (arr[i] == 1)
{
sum += 1;
}
// When array contains another number
else if (arr[i] == 0)
{
sum -= 1;
}
else
{
return;
}
if (sum == 0)
{
front = i + 1;
tail = i;
}
if (result.keys.contains(sum + n))
{
if (front < i - result[sum + n]!)
{
front = i - result[sum + n]!;
tail = i;
}
}
else
{
result[sum + n] = i;
}
i += 1;
}
if (tail == -1)
{
print("None", terminator: "");
}
else
{
print("  Front ", (tail - front + 1) ," Tail ", tail, terminator: "");
}
}
}
func main()
{
// Case 1
// Define the array of (0,1) elements
let arr1: [Int] = [1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0];
var n: Int = arr1.count;
// Case 2
// Define the array of (0,1) elements
let arr2: [Int] = [1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1];
n = arr2.count;
}
main();``````

#### Output

``````  Array :   1   0   1   1   0   1   1   1   1   0   0   0
Front  4  Tail  11
Array :   1   0   1   1   1   1   0   1   1   0   0   1   1
Front  5  Tail  10``````
``````/*
Kotlin program
Largest subarray with equal number of 0s and 1s
*/
class SubArraySum
{
// This function are displaying given array elements
fun display(arr: Array < Int > , size: Int): Unit
{
var i: Int = 0;
while (i < size)
{
print("  " + arr[i]);
i += 1;
}
print("\n");
}
// Find the subarray of equal number of 0s and 1s
fun zeroSumSubarray(arr: Array < Int > , n: Int): Unit
{
// Display given array elements
print("\n  Array :");
this.display(arr, n);
var front: Int = -1;
var tail: Int = -1;
var result:HashMap<Int,Int> = HashMap<Int,Int>();
var sum: Int = 0;
var i: Int = 0;
// Execute loop through by size of array elements
while (i < n)
{
if (arr[i] == 1)
{
sum += 1;
}
// When array contains another number
else if (arr[i] == 0)
{
sum -= 1;
}
else
{
return;
}
if (sum == 0)
{
front = i + 1;
tail = i;
}
if (result.containsKey(sum + n))
{
if (front < i - result.getValue(sum + n))
{
front = i - result.getValue(sum + n);
tail = i;
}
}
else
{
result.put(sum + n, i);
}
i += 1;
}
if (tail == -1)
{
print("None");
}
else
{
print("  Front " + (tail - front + 1) + " Tail " + tail);
}
}
}
fun main(args: Array < String > ): Unit
{
// Case 1
// Define the array of (0,1) elements
var arr1: Array < Int > = arrayOf(1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0);
var n: Int = arr1.count();
// Case 2
// Define the array of (0,1) elements
var arr2: Array < Int > = arrayOf(1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1);
n = arr2.count();
}``````

#### Output

``````  Array :  1  0  1  1  0  1  1  1  1  0  0  0
Front 4 Tail 11
Array :  1  0  1  1  1  1  0  1  1  0  0  1  1
Front 5 Tail 10``````

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

Categories
Relative Post