剑指 Offer II 008. 和大于等于 target 的最短子数组
给定一个含有 n
个正整数的数组和一个正整数 target
。
找出该数组中满足其和≥ target
的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度。如果不存在符合条件的子数组,返回 0
。
sum记录长度,l记录起点,如果sum >= target,则min(当前长度),sum -= nums[l], l--
class Solution { public: int minSubArrayLen(int target, vector<int>& nums) { int l = 0, minx = 100010; long long sum = 0; for(int i = 0; i < nums.size(); i++) { sum += nums[i]; while(sum >= target) { minx = min(minx, i + 1 - l); sum -= nums[l], l++; } } return minx == 100010 ? 0 : minx; } };
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。