首页 > 编程语言 > 详细

算法3、滑动窗口

时间:2021-03-30 16:24:49      阅读:15      评论:0      收藏:0      [点我收藏+]

目的:减少while循环

解决数组中定长问题。

 

 

LC209长度最小的子数组

正确代码

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int i = 0, j = 0;   //
        int total = 0;
        int res = nums.size() + 1;
        if(nums.size() == 0 || nums.empty())
        {
            return 0;
        }
        while( j != nums.size())
        {
            //j向后移动,直到碰到末尾
            //从i到j求和,判断是否>=target,如果是,i向后移动,形成新的窗口,再求和判断,是否要             //更新长度
            total += nums[j];
            j++;

            while(total >= target)
            {
                total -= nums[i];
                i++;
                if(j-i+1 < res)
                {
                    res = j-i+1;
                }
            }

        }
        if(res == nums.size() +1)
        {
            return 0;
        }
        else
        {
            return res;
        }

    }
};

  

 

 

 

 

 

LC1456

 

算法3、滑动窗口

原文:https://www.cnblogs.com/zlh-1024powr/p/14596301.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!