-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmaxSubarraySum.js
34 lines (28 loc) · 1.06 KB
/
maxSubarraySum.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Given an array of integers and a number, write a function called maxSubarraySum, which finds the maximum sum of a subarray with the length of the number passed to the function.
// Note that a subarray must consist of consecutive elements from the original array. In the first example below, [100, 200, 300] is a subarray of the original array, but [100, 300] is not.
// maxSubarraySum([100,200,300,400], 2) // 700
// maxSubarraySum([1,4,2,10,23,3,1,0,20], 4) // 39
// maxSubarraySum([-3,4,0,-2,6,-1], 2) // 5
// maxSubarraySum([3,-2,7,-4,1,-1,4,-2,1],2) // 5
// maxSubarraySum([2,3], 3) // null
// Constraints:
// Time Complexity - O(N)
// Space Complexity - O(1)
function maxSubarraySum(arr, length) {
if(arr.length < length){
return null;
}
let maxSum = 0;
for(let i = 0; i < length; i++){
maxSum += arr[i];
}
let iterateSum =maxSum;
for(let i = length; i < arr.length; i++){
iterateSum += arr[i] - arr[i - length];
if(iterateSum > maxSum){
maxSum = iterateSum;
}
}
return maxSum;
}
console.log(maxSubarraySum([100,200,300,400], 2));