首页 > 其他 > 详细

maximum sum of a subarray with at-least k elements.

时间:2018-09-20 10:59:54      阅读:107      评论:0      收藏:0      [点我收藏+]

 

 

// Returns maximum sum of a subarray with at-least 
    // k elements. 
    static int maxSumWithK(int a[], int n, int k) 
    { 
        // maxSum[i] is going to store maximum sum 
        // till index i such that a[i] is part of the 
        // sum. 
        int maxSum[] = new int [n]; 
        maxSum[0] = a[0]; 
  
        // We use Kadane‘s algorithm to fill maxSum[] 
        // Below code is taken from method 3 of 
        // https://www.geeksforgeeks.org/largest-sum-contiguous-subarray/ 
        int curr_max = a[0]; 
        for (int i = 1; i < n; i++) 
        { 
            curr_max = Math.max(a[i], curr_max+a[i]); 
            maxSum[i] = curr_max; 
        } 
  
        // Sum of first k elements 
        int sum = 0; 
        for (int i = 0; i < k; i++) 
            sum += a[i]; 
  
        // Use the concept of sliding window 
        int result = sum; 
        for (int i = k; i < n; i++) 
        { 
            // Compute sum of k elements ending 
            // with a[i]. 
            sum = sum + a[i] - a[i-k]; 
  
            // Update result if required 
            result = Math.max(result, sum); 
  
            // Include maximum sum till [i-k] also 
            // if it increases overall max. 
            result = Math.max(result, sum + maxSum[i-k]); 
        } 
        return result; 
    } 

  

maximum sum of a subarray with at-least k elements.

原文:https://www.cnblogs.com/apanda009/p/9678608.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!