From bbd7092ef8911c4ff85a7d427853a50b3f774d87 Mon Sep 17 00:00:00 2001 From: Hameed Mulani Date: Sat, 8 Oct 2022 00:39:42 +0530 Subject: [PATCH] SubArray Sum added by Hameed Mulani --- Arrays/subArraySum.cpp | 119 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 Arrays/subArraySum.cpp diff --git a/Arrays/subArraySum.cpp b/Arrays/subArraySum.cpp new file mode 100644 index 0000000..3a1b7e4 --- /dev/null +++ b/Arrays/subArraySum.cpp @@ -0,0 +1,119 @@ +#include +using namespace std; +// 1. +// Prblem : Print largest subarray sum of a given array +// Brute force approach T(n) = O(n^3) +// space Complexity is O(1) + +int subArraySum_1(int *arr, int n){ + // largest Sum + int largestSum = 0; + for(int i = 0; i largest sum + largestSum = max(subarraySum, largestSum); + } + } + return largestSum; +} + +// Finding out the larget sum of subarray +// Brute Force +int main(){ + + int arr[] = {-2,3,4,-1,5,-12,6,1,3}; + int n = sizeof(arr)/sizeof(int); + + cout<<"Max Sum: "<< subArraySum_1(arr, n); + + return 0; +} + + +// 2. +#include +using namespace std; + +// Problem : Print largest subarray sum of a given array +// Algotithm approach T(n) = Inner Loops O(n^2) + prefix loop:O(n) = O(n^2) +// space Complexity is O(1) + +int subArraySum_2(int *arr, int n){ + int prifix[n] = {0}; + prifix[0] = arr[0]; + for(int i = 1; i0? prifix[j] - prifix[i-1] : prifix[j]; + // false condition : if i = 0 then 0 to J sum i.e exact = J // 0 1 2 5 6 + // i=0 j=4 i.e sum = 6 + + // Put a check is subarraySum > largest sum + largestSum = max(subarraySum, largestSum); + } + } + return largestSum; +} + +// Finding out the larget sum of subarray +int main(){ + + int arr[] = {-2,3,4,-1,5,-12,6,1,3}; + int n = sizeof(arr)/sizeof(int); + + cout<<"Max Sum: "<< subArraySum_2(arr, n); + + return 0; +} + + +// 3. +#include +using namespace std; + +// Problem : Print largest subarray sum of a given array +// Algotithm: Kadane's Algorithm [T(n) = O(n) Optimal Solution] +// Space Complexity is O(1) + +int kadanes_algo(int *arr, int n){ + // initial current_sum and max sum + int cur_sum = 0; + int max_sum = 0; + for(int i = 0; i0) = 6 +// at idx 6 (11+-12 = -1<0) = 0 +// cs = 0 3 7 6 11 0 6 7 10 12 +// ms = 0 3 7 7 11 11 11 11 11 12 = 12 +// Finding out the larget sum of subarray +int main(){ + + int arr[] = {-2,3,4,-1,5,-12,6,1,3}; + int n = sizeof(arr)/sizeof(int); + + cout<<"Max Sum: "<< kadanes_algo(arr, n); + + return 0; +} \ No newline at end of file