Advertisement
sweet1cris

Untitled

Jan 9th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.85 KB | None | 0 0
  1. public class Solution {
  2.     /**
  3.      * @param nums an array of integers
  4.      * @param k an integer
  5.      * @return the largest sum
  6.      */
  7.     public int maxSubarray4(int[] nums, int k) {
  8.         // Write your code here
  9.         int n = nums.length;
  10.         if (n < k)
  11.             return 0;
  12.  
  13.         int result = 0;
  14.         for (int i = 0; i < k; ++i)
  15.             result += nums[i];
  16.  
  17.         int[] sum = new int[n + 1];
  18.         sum[0] = 0;
  19.        
  20.         int min_prefix = 0;
  21.         for (int i = 1; i <= n; ++i) {
  22.             sum[i] = sum[i - 1] + nums[i - 1];
  23.             if (i >= k && sum[i] - min_prefix > result) {
  24.                 result = Math.max(result, sum[i] - min_prefix);
  25.             }
  26.             if (i >= k) {
  27.                 min_prefix = Math.min(min_prefix, sum[i - k + 1]);
  28.             }
  29.         }
  30.         return result;
  31.     }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement