zoukankan      html  css  js  c++  java
  • lintcode620- Maximum Subarray IV- medium

    Given an integer arrays, find a contiguous subarray which has the largest sum and length should be greater or equal to given length k.
    Return the largest sum, return 0 if there are fewer than k elements in the array.

     Notice

    Ensure that the result is an integer type.

    Example

    Given the array [-2,2,-3,4,-1,2,1,-5,3] and k = 5, the contiguous subarray [2,-3,4,-1,2,1] has the largest sum = 5.

     
    前缀法,只是这次preMin是在第一个到第i-k个数内部找而已。还是最大化sum[j] - sum[i],就要求sum[i]一定要最小的。
     
    public class Solution {
        /*
         * @param nums: an array of integer
         * @param k: an integer
         * @return: the largest sum
         */
        public int maxSubarray4(int[] nums, int k) {
            // write your code here
            if (nums == null || nums.length == 0 || nums.length < k) {
                return 0;
            }
            
            int[] sums = new int[nums.length];
            sums[0] = nums[0];
            for (int i = 1; i < sums.length; i++) {
                sums[i] = sums[i - 1] + nums[i];
            }
            
            int minPre = 0;
            int maxSum = Integer.MIN_VALUE;
            for (int i = k - 1; i < sums.length; i++) {
                int crtSum = sums[i] - minPre;
                maxSum = Math.max(maxSum, crtSum);
                minPre = Math.min(minPre, sums[i - k + 1]);
            }
            return maxSum;
        }
    }
     
     
  • 相关阅读:
    Shodan新手入坑指南
    linux 下查看网卡工作速率
    centos关闭ipv6
    springBoot----@ConditionalOnxxx相关注解总结
    ElasticSearch Root身份运行
    CentOS6 Install kafka
    CentOS 7 中firewall-cmd命令
    sensu
    metrics+spring+influxdb
    SpringBoot(十二):SpringBoot整合Kafka
  • 原文地址:https://www.cnblogs.com/jasminemzy/p/7818950.html
Copyright © 2011-2022 走看看