mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2025-12-19 08:59:05 +08:00
Add maximum subarray.
This commit is contained in:
26
src/algorithms/sets/maximum-subarray/bfMaximumSubarray.js
Normal file
26
src/algorithms/sets/maximum-subarray/bfMaximumSubarray.js
Normal file
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* Brute Force solution.
|
||||
* Complexity: O(n^2)
|
||||
*
|
||||
* @param {Number[]} inputArray
|
||||
* @return {Number[]}
|
||||
*/
|
||||
export default function bfMaximumSubarray(inputArray) {
|
||||
let maxSubarrayStartIndex = 0;
|
||||
let maxSubarrayLength = 0;
|
||||
let maxSubarraySum = null;
|
||||
|
||||
for (let startIndex = 0; startIndex < inputArray.length; startIndex += 1) {
|
||||
let subarraySum = 0;
|
||||
for (let arrLength = 1; arrLength <= (inputArray.length - startIndex); arrLength += 1) {
|
||||
subarraySum += inputArray[startIndex + (arrLength - 1)];
|
||||
if (maxSubarraySum === null || subarraySum > maxSubarraySum) {
|
||||
maxSubarraySum = subarraySum;
|
||||
maxSubarrayStartIndex = startIndex;
|
||||
maxSubarrayLength = arrLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return inputArray.slice(maxSubarrayStartIndex, maxSubarrayStartIndex + maxSubarrayLength);
|
||||
}
|
||||
Reference in New Issue
Block a user