xxxxxxxxxx
def maxSubArray(self, nums: List[int]) -> int:
curr_best = overall_best = nums[0]
for i in range(1,len(nums)):
if curr_best>=0:
curr_best = curr_best + nums[i]
else:
curr_best = nums[i]
if curr_best > overall_best:
overall_best = curr_best
return overall_best
xxxxxxxxxx
def max_subarray(numbers):
"""Find the largest sum of any contiguous subarray."""
best_sum = 0 # or: float('-inf')
current_sum = 0
for x in numbers:
current_sum = max(0, current_sum + x)
best_sum = max(best_sum, current_sum)
return best_sum
xxxxxxxxxx
#include <iostream>
using namespace std;
int main(){
//Input Array
int n;
cin >> n;
int arr[n];
for(int i =0;i< n;i++){
cin >> arr[i];
}
int currentSum = 0;
int maxSum = INT_MIN;
//algo
for (int i = 0; i < n; i++)
{
currentSum += arr[i];
if (currentSum <0)
{
currentSum = 0;
}
maxSum = max(maxSum, currentSum);
}
cout << maxSum << endl;
return 0;
}
xxxxxxxxxx
"""
Implementation of "kadane's algorithm".
It returns the maximum subarray sum for
a given bigger array.
Time complexity: O(n)
Space complexity: O(1)
"""
def kadane_algorithm(array):
running_sum = array[0]
max_sum = array[0]
for idx in range(1, len(array)):
current_val = array[idx]
running_sum = max(current_val, running_sum+current_val)
max_sum = max(max_sum, running_sum)
return max_sum
print(kadane_algorithm([1, 2, 3, 5, -1])) # 11 = 1 + 2 + 3 + 5
xxxxxxxxxx
def max_subarray_sum(arr):
max_sum = float('-inf')
curr_sum = 0
start = end = 0
for i in range(len(arr)):
curr_sum += arr[i]
if curr_sum > max_sum:
max_sum = curr_sum
end = i
if curr_sum < 0:
curr_sum = 0
start = i + 1
subarray = arr[start:end+1]
return subarray, max_sum
# Example usage
arr = [-2, -3, 4, -1, -2, 1, 5, -3]
subarray, max_sum = max_subarray_sum(arr)
print("Subarray with maximum sum:", subarray)
print("Maximum sum:", max_sum)
xxxxxxxxxx
public static int SumArray()
{
var arr = new int[]{ -2, -4, -5, -6, -7, -89, -56 };
var sum = 0;
var max = arr[0];
foreach (var item in arr)
{
sum += item;
// sum = Math.Max(sum,0); resting here will not give expected output
max = Math.Max(sum,max);
sum = Math.Max(sum,0);
}
return max;
}
xxxxxxxxxx
var maxSequence = function(arr){
var min = 0, ans = 0, i, sum = 0;
for (i = 0; i < arr.length; ++i) {
sum += arr[i];
min = Math.min(sum, min);
ans = Math.max(ans, sum - min);
}
return ans;
}
xxxxxxxxxx
l=[4,6,10,8,2,1]
ans=0
m=3
for i in range(len(l)+1):
for j in range(i):
if len(l[j:i])==m:
ans=max(ans,sum(l[j:i]))
print(ans)
xxxxxxxxxx
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i = 0;i<n;i++){
cin>>a[i];
}
int s = 0;
int mx = INT_MIN;
for(int i =0;i<n;i++){
s+=a[i];
if(s<0){
s=0;
}
mx = max(s,mx);
}
cout<<mx;
return 0;
}
xxxxxxxxxx
def getMaxSum(arr, k):
maxSum = 0
windowSum = 0
start = 0
for i in range(len(arr)):
windowSum += arr[i]
if ((i - start + 1) == k):
maxSum = max(maxSum, windowSum)
windowSum -= arr[start]
start += 1
return maxSum