进行算法练习时遇到的问题

提问:给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0
下面是我的做法:

img

img

大概思路就是slow指针和fast指针形成一把尺子 不断伸缩
不知道哪里有错误

  • 这篇博客: 【C语言】给定一个n个元素有序的(升序)整型数组nums 和一个目标值target,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1中的 代码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include <stdio.h>
    int search(int* nums,int size,int target);
    
    int main()
    {
        int num[10]={};
        int i=0,j=0,S=0,K=0;
        printf("please input number!\n");
        for(i=0;i<10;i++)
        {
            scanf("%d",&num[i]);
        }
        for(j=0;j<10;j++)
        {
                printf("num is %d\n",num[j]);
        }
        K=sizeof(num)/sizeof(int)-1;
        S=search(num,K,22);
    
        printf("K is %d\n",K);
        if(S==-1)
            printf("sorry,the target is not in num ");
        else if(S==0)
            printf("error");
        else
            printf("the target of num is %d",S);
    	return 0;
    }
    
    int search(int* nums,int size,int target)     
    {
        int left=0;    
        int right=size;
        int mid=1;
        while(1)
        {
            if(nums[left]>nums[right])
            return 0;
            
            if(target>nums[right]||target<nums[left])
             return -1; 
            mid=left+(right-left+1)/2;
            if(nums[mid]>target)
            {
                right=mid-1;
            }
            else if(nums[mid]<target)
            {
                left=mid+1;
            }
            else if(nums[mid]=target)
                return nums[mid];
        }
        
    }