def max_length(s, k):
current =[]
max_len =-1 # returns -1if there is no subsequence that adds up to k.for i in s:
current.append(i)whilesum(current)> k: # Shrink the array from the left, until the sum is <= k.
current = current[1:]ifsum(current)== k:
max_len =max(max_len,len(current))return max_len
def max_subarray(numbers):"""Find the largest sum of any contiguous subarray."""
best_sum =0 # or:float('-inf')
current_sum =0for x in numbers:
current_sum =max(0, current_sum + x)
best_sum =max(best_sum, current_sum)return best_sum
publicstaticintSumArray(){
var arr =newint[]{-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;}
"""
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
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;}
// Java program to print largest // contiguous array sumclassGFG{staticvoidmaxSubArraySum(int a[],int size){int max_so_far = Integer.MIN_VALUE,
max_ending_here =0,start =0,
end =0, s =0;for(int i =0; i < size; i++){
max_ending_here += a[i];if(max_so_far < max_ending_here){
max_so_far = max_ending_here;
start = s;
end = i;}if(max_ending_here <0){
max_ending_here =0;
s = i +1;}}
System.out.println("Maximum contiguous sum is "+ max_so_far);
System.out.println("Starting index "+ start);
System.out.println("Ending index "+ end);}// Driver codepublicstaticvoidmain(String[] args){int a[]={-2,-3,4,-1,-2,1,5,-3};int n = a.length;maxSubArraySum(a, n);}}// This code is contributed by prerna saini
staticvoidupdate(int arr[],int arrSize,int index,int value){// Your code here
arr[index-1]=value;}//Funciton to return the Maximum-Sum in the range.staticintquery(int arr[],int n,int left,int right){// code hereint curr=arr[left-1];int sum=arr[left-1];for(int i=left;i<right;i++){
sum=Math.max(arr[i], sum+arr[i]);
curr=Math.max(curr,sum);}return curr;}