请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么sum还要>=s

  while (l < nums.length) {
            if (r + 1 < nums.length + 1 && sum < s) {//如果当前窗口的sum值小于s
                r++;
                sum += nums[r];//窗口右边界向右拓展
            } else {
                sum -= nums[l];
                l++;
            }

在这段代码中,if判断的事sum<s,那么他的else就是sum>=s,那为什么下面还是sum>=s?

  if(sum>=s){
                res =Math.max(res,r-l+1);
            }

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2019-09-20 02:01:45

这是两段逻辑:


while(l < nums.size()){   // 窗口的左边界在数组范围内,则循环继续    
    // 第一段逻辑首先 更新 sum 值
    if(r + 1 < nums.size() && sum < s)    
        sum += nums[++r];    
    else // r已经到头 或者 sum >= s    
        sum -= nums[l++];  
    // 第一段逻辑结束。
    
    // 第二段逻辑在 sum >= s 的时候更新 res 值
    if(sum >= s)    
        res = min(res, r - l + 1);    
}

第一段逻辑有一个 else,描述如果 r + 1 >= nms.size() 或者 sum >= s 的时候要做什么。

第一段逻辑和第二段逻辑无关。

第二段逻辑根据第一段逻辑计算出的 sum 值,在必要的时候(sum >= s的时候),更新 res 值。


继续加油!:)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号