1. 程式人生 > 其它 >力扣209題(長度最小的子陣列)

力扣209題(長度最小的子陣列)

209、長度最小的子陣列

基本思想:

滑動視窗

具體實現:

1.視窗內是什麼?

視窗內是視窗起始位置和視窗結束位置框住的一段陣列。

2.視窗的起始位置如何移動?

如果當前視窗的值>=s,視窗要縮小,就是起始位置向後移。

3.視窗的結束位置如何移動?

如果當前視窗的值<s,視窗要擴大,就是結束位置向後移。

程式碼:

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int left = 0;//滑動視窗起始位置指標
        int sum = 0;//視窗內元素之和
        int
result = Integer.MAX_VALUE; for (int right = 0; right < nums.length; right++){//如果當前視窗的值<s,視窗要擴大,就是結束位置向後移。 sum += nums[right]; while (sum >= target){ result = Math.min(result,right - left + 1);//找長度最小的 sum -= nums[left++];//如果當前視窗的值>=s,視窗要縮小,就是起始位置向後移。
} }//如果當前視窗的值<s,視窗要擴大,就是結束位置向後移。 return result == Integer.MAX_VALUE ? 0 : result; } }