From d7dfe4ccc0a456b8cd319f1aa063b84f9c05b0b6 Mon Sep 17 00:00:00 2001 From: Aditi Chaurasia <103958459+aditi-chaurasia@users.noreply.github.com> Date: Thu, 20 Oct 2022 00:42:04 +0530 Subject: [PATCH] Create LargestSubArray.cpp Hacktoberfest Submssion. #13 --- Cpp/LargestSubArray.cpp | 49 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Cpp/LargestSubArray.cpp diff --git a/Cpp/LargestSubArray.cpp b/Cpp/LargestSubArray.cpp new file mode 100644 index 0000000..ebdd431 --- /dev/null +++ b/Cpp/LargestSubArray.cpp @@ -0,0 +1,49 @@ +#include + +using namespace std; + +// This function Prints the starting and ending +// indexes of the largest subarray with equal +// number of 0s and 1s. Also returns the size +// of such subarray. + +int findSubArray(int arr[], int n) +{ + int sum = 0; + int maxsize = -1, startindex; + + // Pick a starting point as i + for (int i = 0; i < n - 1; i++) { + sum = (arr[i] == 0) ? -1 : 1; + + // Consider all subarrays starting from i + for (int j = i + 1; j < n; j++) { + (arr[j] == 0) ? (sum += -1) : (sum += 1); + + // If this is a 0 sum subarray, then + // compare it with maximum size subarray + // calculated so far + if (sum == 0 && maxsize < j - i + 1) { + maxsize = j - i + 1; + startindex = i; + } + } + } + if (maxsize == -1) + cout << "No such subarray"; + else + cout << startindex << " to " + << startindex + maxsize - 1; + + return maxsize; +} + +/* Driver code*/ +int main() +{ + int arr[] = { 1, 0, 0, 1, 0, 1, 1 }; + int size = sizeof(arr) / sizeof(arr[0]); + + findSubArray(arr, size); + return 0; +}