leetcode 209. Minimum Size Subarray Sum
阿新 • • 發佈:2017-05-06
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