代码随想录算法训练营第二天 | 209.长度最小的数组

题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。 拓展题目可以先不做。

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:拿下滑动窗口! | LeetCode 209 长度最小的子数组_哔哩哔哩_bilibili

class Solution {

public:

    int minSubArrayLen(int target, vector<int>& nums) {

int sum=0;

int result=INT32_MAX;

int i=0;

int subLength=0;

for(int j=0;j<nums.size();j++){

sum+=nums[j];

while(sum>=target){

subLength=(j-i+1);

result = result < subLength ? result : subLength;

sum-=nums[i++];

}

}

  return result == INT32_MAX ? 0 : result;

错误原因:完全没有思路,其实就是用for移动滑动窗口尾巴用while移动滑动窗口的开头。

因为是用滑动窗口的思想,先定义元素求和值sum,结果子数组长度,临时子数组长度,滑动窗口的起始点i=0.

然后用外圈的for循环去移动滑动窗口的尾巴索引也就是j,然后每次循环都内嵌一个while循环只要sum大于target就不断地移动滑动窗口的开头索引i,然后sum不断减去滑动窗口的第一个元素;还要判断结果子数组和滑动窗口的长度大小关系。大小循环结果后返回result。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值