一、题目
二、代码
class Solution
{
public int minSubArrayLen(int target, int[] nums)
{
int i=0;
int j=0;
int length=nums.length;
int sum=0;
int result=Integer.MAX_VALUE;
for(i=0;i<length;i++)
{
sum=sum+nums[i];
if(sum>=target)
{
while(sum-nums[j]>=target)
{
sum=sum-nums[j];
j++;
}
result = Math.min(result,i-j+1);
}
}
if(result==Integer.MAX_VALUE) return 0;
return result;
}
}
三、运行结果
四、附录
二刷
class Solution
{
public int minSubArrayLen(int target, int[] nums)
{
int i;
int length = nums.length;
int sum =0;
int temp_length=0;
int return_length = Integer.MAX_VALUE;
int left = 0;
//大于后左侧收缩
for(i=0;i<length;i++)
{
sum = sum+nums[i];
temp_length =temp_length+1;
if(sum>=target )
{
while(sum-nums[left]>=target)
{
sum = sum-nums[left];
left++;
}
temp_length = i-left+1;
if(temp_length<return_length)
{
return_length = temp_length;
}
}
}
if(return_length == Integer.MAX_VALUE) return 0;
return return_length;
}
}