力扣 209.长度最小的子数组

张开发
2026/4/16 10:12:23 15 分钟阅读

分享文章

力扣 209.长度最小的子数组
暴力解法class Solution { public: int minSubArrayLen(int target, vectorint nums) { int result INT32_MAX; int sum 0;//子序列的数值之和 int subLength 0;//子序列的长度 for(int i0;inums.size();i)//设置子序列 起始位置指针为i { sum0; for(int ji;jnums.size();j) { sum nums[j];//加上终止指针所指向的元素值 if(sum target){//子序列和一旦超过了s,更新result subLengthj-i1;//子序列长度 //更新result的值 result resultsubLength?result:subLength; //result的值是否小于当前 subLength的值 //小于则不变大于则更新 //因为寻找的是最短数列 break;//因为要找长度最短的子序列 //所以一旦满足和最小立即跳出循环 } } } return result INT32_MAX?0:result; //条件满足时的值为0即result没有被赋值仍然是原始值INT32_MAX } };滑动窗口class Solution { public: int minSubArrayLen(int target, vectorint nums) { int result INT32_MAX; int sum 0;//子序列的数值之和 int subLength 0;//子序列的长度 int i0; for(int j0;jnums.size();j)//设置子序列 起始位置指针为i { sum nums[j]; while (sumtarget)//注意是大于等于不可漏了等于1 { subLength j-i1;//子序列的长度 result resultsubLength?result : subLength; sum -nums[i];//滑动窗口的范围越来越小 i; //不断变化起始位置 } } return resultINT32_MAX?0:result; } };

更多文章