廣州企業(yè)網(wǎng)站設(shè)計(jì)建網(wǎng)站需要什么條件
力扣209題
題目描述:長(zhǎng)度最小的子數(shù)組
給定一個(gè)含有
n
個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù)target
。找出該數(shù)組中滿足其總和大于等于
target
的長(zhǎng)度最小的 子數(shù)組[numsl, numsl+1, ..., numsr-1, numsr]
,并返回其長(zhǎng)度**。**如果不存在符合條件的子數(shù)組,返回0
。

**題解思路:**力扣上暴力搜索會(huì)超時(shí)!
可以使用
滑動(dòng)窗口
的方法實(shí)現(xiàn),用一個(gè)指針尋找終止位置,然后通過 sum>= target來更新起始位置,從而達(dá)到降低復(fù)雜度的目的。
class Solution {// --- 滑動(dòng)窗口 ---public int minSubArrayLen(int target, int[] nums) {int sum = 0;int subLen = 0;// 每次更新的數(shù)組長(zhǎng)度int minLen = Integer.MAX_VALUE;// 最小的子數(shù)組長(zhǎng)度,初始時(shí)設(shè)為最大值int start = 0;// 起始位置的下標(biāo)for (int end = 0; end < nums.length; end++) {sum += nums[end];while (sum >= target) {subLen = end - start + 1;// 更新子數(shù)組的長(zhǎng)度minLen = subLen < minLen ? subLen : minLen;// 取最小的子數(shù)組長(zhǎng)度sum -= nums[start++]; // 更新 i 的位置}}return minLen == Integer.MAX_VALUE ? 0 : minLen;}
}