力扣中209 长度最小的子数组

本来自己尝试着写 刚开始一直bug 大样例能过但是会有一些特殊情况

比如所有的和都小于target 刚好等于target等情况 在这边玩微信边做 好半天给搞不对

 

 

 还有就是看完题解觉得 对于左右指针 直接设出更合适 然后对于题意 顺着写的代码一步一步走

class Solution {
    public static int minSubArrayLen(int target, int[] nums) {
        int len = nums.length;
        int flag=0; //标记总的和都小于target这种情况
        int sum=0;//子数组和
        int res=len;//最后输出的个数
        int left=0;//左边界        
        int count=0; //计数的个数  
        for(int i=0;i<len;i++) {
            sum=sum+nums[i];
            count++;
            while(sum>=target){
                res = Math.min(res,count);
                flag=1;
                sum=sum-nums[left];
                left++;
                count--;               
            }
        }
        if(flag==0) {
            return flag;
        }
        return res;
    }
}

 

posted @ 2023-03-02 15:55  Ssshiny  阅读(12)  评论(0)    收藏  举报