力扣刷题记录143.1-----35. 搜索插入位置

目录

  • 一、题目
  • 二、代码
  • 三、运行结果


一、题目

力扣刷题记录143.1-----35. 搜索插入位置_第1张图片
力扣刷题记录143.1-----35. 搜索插入位置_第2张图片

二、代码

class Solution
{
public:
    int searchInsert(vector<int>& nums, int target) 
    {
       int i,j;
       int left,right,middle;
       int return_int=0;
       
       if(nums.size()<3)  //长度较短
       {
           if(nums.size()==1)
           {
               if(nums[0]>target) return 0;
               else if(nums[0]==target) return 0;
               else  return 1;
           }
          for(i=0;i<nums.size();i++)
          {
             if(nums[i]==target) 
             {
                 return_int=i;
                 break;
             }
             else if(nums[i]<target)
             {
                 return_int=i+1;
             }
          }
       }
       else  //二分
       {

          left=0;
          right=nums.size()-1;
          middle=(left+right)/2;

          while(left<=right-2)  //二分
          {
              if(nums[middle]==target)
              {
                  break;
              }
              else if(nums[middle]<target)
              {
                  left=middle;
                  middle=(left+right)/2;
              }
              else if(nums[middle]>target)
              {
                  right=middle;
                  middle=(left+right)/2;
              }
          }    
          std::cout<<" middle  "<<middle<<std::endl;

          if(nums[middle]==target) return_int=middle;
          else if(nums[right]==target) return_int=right;
          else 
          {
              if(nums[right]<target) 
              {
                 return_int=right+1;
                 //std::cout<<"  此处1"<
              }
              else if(nums[middle]<target&&target<nums[right] )
              {
                 return_int=middle+1;
                 //std::cout<<"  此处2"<
              } 
              else if(target<nums[middle] ) 
              {
                    if(middle==0) return_int=0;
                    else
                    {
                         return_int=middle-1;
                    }

                    //std::cout<<"  此处3"<
              }
          }

       }

       return return_int;
    }
};

三、运行结果

力扣刷题记录143.1-----35. 搜索插入位置_第3张图片

你可能感兴趣的:(#,leetcode,算法,c++)