From 54803533c68b9cfcd4a1f17447a092b15c1d929d Mon Sep 17 00:00:00 2001 From: anshul3pathi Date: Tue, 27 Oct 2020 16:25:35 +0530 Subject: [PATCH] Added Kadane's algo for getting largest sum in a contiguous array --- CPP/largest_sum_in_a_contiguous_array.cpp | 18 ++++++++++++++++++ CPP/largest_sum_in_a_contiguous_array.exe | Bin 0 -> 46932 bytes 2 files changed, 18 insertions(+) create mode 100644 CPP/largest_sum_in_a_contiguous_array.cpp create mode 100644 CPP/largest_sum_in_a_contiguous_array.exe diff --git a/CPP/largest_sum_in_a_contiguous_array.cpp b/CPP/largest_sum_in_a_contiguous_array.cpp new file mode 100644 index 0000000..c0e28cf --- /dev/null +++ b/CPP/largest_sum_in_a_contiguous_array.cpp @@ -0,0 +1,18 @@ +/* Finding largest sum in a contiguous array using Kadane's algorithm. +author: anshul3pathi +*/ +# include +using namespace std; + +// Function takes an integer array and it's size as input +// and returns the maximum contiguous sum. +int maxSumInArray(int arr[], int size) { + int maxSoFar = arr[0]; + int currMax = arr[0]; + + for(int i = 1; i < size; i++) { + currMax = max(arr[i], currMax + arr[i]); + maxSoFar = max(maxSoFar, currMax); + } + return maxSoFar; +} diff --git a/CPP/largest_sum_in_a_contiguous_array.exe b/CPP/largest_sum_in_a_contiguous_array.exe new file mode 100644 index 0000000000000000000000000000000000000000..72ba7681ec201917bb8f44953b706d5b86d61a10 GIT binary patch literal 46932 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 W$HE@J4=9Z`;kYq^+em$);C}