目的:减少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
原文:https://www.cnblogs.com/zlh-1024powr/p/14596301.html