209.子数组最小的长度

209.子数组最小的长度

#include<iostream>
#include<vector>
using namespace std;
int main() {
	vector<int> nums={2,3,1,2,4,3};
	int target=1; 
	int left=0,right=0;
	int sum=0;int leftIndex=-1,rightIndex=-1;
	int ans=nums.size()+1;
	for(;right<nums.size();right++){
		sum+=nums[right];
		while(sum-nums[left]>=target){
			sum-=nums[left];
			left++;
		}
		if(sum>=target){
			ans=min(ans,right-left+1);
			leftIndex=left,rightIndex=right;
		}
	} 
	if(ans>nums.size())printf("该数组不存在和大于等于target的子数组");
	else printf("该数组存在和大于等于target的子数组,满足条件的子数组的最短长度为:%d 左、右端点index分别为:%d %d",ans,leftIndex,rightIndex);
	return 0;
}
posted @ 2025-03-26 00:07  Cheauncey  阅读(34)  评论(0)    收藏  举报