The Maximum Subarray

Sort by

recency

|

41 Discussions

|

  • + 0 comments

    ` vector maxSubarray(vector arr) { if (arr.empty()) return {0,0};

    int subarr_sum=0, current_sum = 0, subseq_sum=0;
    
    for (int i : arr){
    
        current_sum = max(i, current_sum + i);
        subarr_sum = max(current_sum, subarr_sum); 
    
        if (i>0){
            subseq_sum+=i;
        }
    }
    
    if(subseq_sum==0){
        sort(arr.begin(),arr.end());
        subseq_sum = arr.back();
        subarr_sum = arr.back();
    }
    
    return {subarr_sum, subseq_sum};
    

    } `

  • + 0 comments

    Java 8 Solution:-

    public static List<Integer> maxSubarray(List<Integer> arr) {
            int maxSubarraySum = Integer.MIN_VALUE;
            int currentSum = 0;
            int maxSubsequenceSum = 0;
            boolean hasPositive = false;
            int maxNegative = Integer.MIN_VALUE;
            for (int num : arr) {
                // Kadane's Algorithm for Maximum Subarray Sum
                currentSum += num;
                if (currentSum > maxSubarraySum) {
                    maxSubarraySum = currentSum;
                }
                if (currentSum < 0) {
                    currentSum = 0;
                }
                if (num > 0) {
                    maxSubsequenceSum += num;
                    hasPositive = true;
                }
                if (num < 0 && num > maxNegative) {
                    maxNegative = num;
                }
            }
            if (!hasPositive) {
                maxSubsequenceSum = maxNegative;
            }
            
            return Arrays.asList(maxSubarraySum, maxSubsequenceSum);
        }
    }
    
  • + 0 comments

    Here is - HackerRank The Maximum Subarrray problem solution in Python, Java, C++, C and javascript

  • + 0 comments
    def maxSubarray(arr):
        max_ar, max_se = arr[0], 0
        curr_ar = 0
        for val in arr:
            # calculate maximum subarray
            curr_ar = max(val, curr_ar + val)
            max_ar = max(max_ar, curr_ar)
            # calculate maximum subsequence
            if val > 0:
                max_se += val
        # if all val in arr are negative
        if max_se == 0:
            max_se = max(arr)
        
        return max_ar, max_se
    
  • + 0 comments

    Kadane's max subArray sum

    function maxSubArr(nums) {    
        let current_max = nums[0], max_so_far = nums[0];
            for (let i = 1; i < nums.length; i++){
                current_max = Math.max(nums[i], current_max + nums[i]);
                max_so_far = Math.max(max_so_far, current_max);
            }
            return max_so_far;
    }