1. 程式人生 > >leetcode 209. Minimum Size Subarray Sum

leetcode 209. Minimum Size Subarray Sum

urn https scrip subarray () ins -s mar color

https://leetcode.com/problems/minimum-size-subarray-sum/#/description

題目很簡單。題意就是求字符串中長度最小的一個子串(子串和大於等於s)

其實感覺直接暴力也可以寫,但題目有提示用兩個指針,感覺兩個指針寫,更飄逸一些。

一個end指針一直右移,直到temp+=num[end++],temp大於等於s,然後移動start指針,直到temp-=num[start++]小於s,然後求end和start之差,整個循環在end>=len時結束。稍微註意一下整個字符串小於s的情況。

思路很簡單,只是我一開始看到雙指針解題,一開始想到的就是left,right往中間跑,感覺前面很多都是left,right的形式,思維有些江化。暴力膜。所以一開始進了誤區。

 1 class Solution {
 2 public:
 3     int minSubArrayLen(int s, vector<int>& nums) {
 4         int start=0,end=0;
 5         int len=nums.size();
 6         int res=len+1;
 7         int temp=0;
 8         while(end<len){
 9             while(end<len&&temp<s)
10                 temp+=nums[end++];
11 while(start<end&&temp>=s) 12 temp-=nums[start++]; 13 res=min(res,end-start+1); 14 } 15 return res==len+1?0:res; 16 } 17 };

leetcode 209. Minimum Size Subarray Sum