S2 icon indicating copy to clipboard operation
S2 copied to clipboard

0209. Minimum Size Subarray Sum | LeetCode Cookbook

Open halfrost opened this issue 4 years ago • 1 comments

https://books.halfrost.com/leetcode/ChapterFour/0200~0299/0209.Minimum-Size-Subarray-Sum/

halfrost avatar Feb 19 '21 13:02 halfrost

Follow up里要求O(n logn)的解,可以用前缀和+二分来做:

func minSubArrayLen(target int, nums []int) int {
    sum := make([]int, len(nums) + 1)
    for i, num := range nums {
        sum[i+1] = sum[i] + num
    }
    
    res := len(nums) + 1
    for i := range nums {
        l, r := i+1, len(nums)
        for l < r {
            m := (l + r) / 2
            if sum[m] - sum[i] < target {
                l = m + 1
            } else {
                r = m
            }
        }
        if sum[l] - sum[i] >= target {
            if l-i < res {
                res = l-i
            }
        }
    }
    if res > len(nums) {
        return 0
    }
    return res
}

hanlins avatar Jan 17 '22 06:01 hanlins