Leetcode - Counting Elements
Leetcode - Maximum Size Subarray Sum Equals k

Leetcode - Minimum Size Subarray Sum

violet posted @ Apr 08, 2020 06:19:03 AM in 算法 with tags Algorithm Golang SlidingWindow array , 244 阅读

https://leetcode.com/problems/minimum-size-subarray-sum/

Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isn't one, return 0 instead.

Example: 

Input: s = 7, nums = [2,3,1,2,4,3]
Output: 2
Explanation: the subarray [4,3] has the minimal length under the problem constraint.

 

A typical sliding window problem.

func minSubArrayLen(s int, nums []int) int {
    if len(nums) == 0 {
        return 0
    }
    sum := 0
    left := 0
    min := math.MaxInt32
    for right := 0; right < len(nums); right++ {
        sum += nums[right]
        for sum >= s {
            if right - left + 1 < min {
                min = right - left + 1
            }
            sum -= nums[left]

            left++
        }
    }
    if min == math.MaxInt32 {
        return 0
    }
    return min
}

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter