med怎么旋转图片leetcode-33-搜索旋转排序数组

新闻资讯2026-04-21 00:09:34
    int search(vector<int>& nums, int target) 
    
        while(front<behind)//找到旋转节点的索引,最后存储在med中
        
            if(nums[med]<nums[med-1]&&nums[med]<nums[med+1])//满足条件,med就是我们要的旋转节点
                break;
            if(nums[med]>nums[front]||nums[med]>nums[behind])//如果med对应的数值大于front对应的数值
            {                          //或者med对应的数值大于behind对应的数值
                front=med+1;                  //那么说明旋转节点在med前面
                med=(front+behind)/2;              
            }
            else
            {
         behind=med-1;
         med=(front+behind)/2;
            }
        }
        front=0,behind=s1-1;//找到旋转节点的索引之后,我们分两段,看一下target在哪一段
        if(nums[front]<=target&&target<=nums[med-1])//用典型的二分法找到target的索引
        
            return -1;//如果找不到,那么返回-1
        }
        else if(nums[med]<=target&&target<=nums[behind])//用典型的二分法找到target的索引
        
            return -1;//如果找不到,那么返回-1
        }
        return -1;//target没有在旋转节点两边的任何一段之中,那么返回-1
    }