题目要求:给一个正整数数组和一个正整数,找出该数组中满足其总和大于等于此正整数的最小连续子数组,返回其长度,没有满足的就返回0。
暴力:两层for循环,一层控制起始,一层控制终止,把所有区间全部枚举出来进行判断。
双指针(滑动窗口):一个for做两个for的事情
首先,循环中的j一定是终止位置(若为起始位置,则终止位置需要遍历,即成为了暴力解法)
只有当集合满足大于等于目标值时,起始位置才可以开始移动,缩小目前的集合
代码实现:
result=MAX;
for(j=0;j<numsize;j++){
sum+=num[j];
while(sum>=s){
subL=j-i+1;
result=min(result,subL);
sum=sum-num[i];
i++;}
return result;
!!!注意此时时间复杂度O(n)
leetcode实战:
几点注意:
1.INT_MAX的用法
2.min函数
3.最后的判断表达式
4.时间复杂度问题
暴力解法: