做这个题真的是无语了,审错题目了,题目说的连续子数组,我一直在按非连续的去分析,导致一直再搞深搜。。。
对于这种连续子数组问题,双指针是最简单的办法了。。。
int minSubArrayLen(int target, int* nums, int numsSize){
int sum = 0;
int left = 0;
int right = 0;
int resLen = INT_MAX;
while(right < numsSize) {
sum += nums[right];
while (sum >= target) {
int tmpLen = right - left + 1;
sum -= nums[left++];
resLen = resLen > tmpLen ? tmpLen : resLen;
}
right++;
}
return resLen == INT_MAX ? 0 : resLen;
}
但要注意一点,如果最后整个数组的和都没大于traget的话,resLen是设置的初始值,要判断一下