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

目录

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


完成次数 2

一、题目

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

二、代码

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
    
    int size= nums.size();
    
    //std::cout<
    
    int left=0;
    int right=size-1;
    int middle=0;
    int return_number=-1;

    while(left<=right)
    {
            //可以二分时
            if(left<=right-2)              
         {        
                middle=(left+right)/2;     //题目给出了升序排列

                if(nums[middle]==target)    //二分之后相等 返回索引值
                {
                return_number=middle;
                break;
                } 
                if(nums[middle]>target)  //二分之后的数值比目标值大  中间的值一定不是 在左边
                {
                right=middle-1;

                }
            
                if(nums[middle]<target)  //二分之后的数值比目标值小  中间的值一定不是  在邮编
                {
                    left=middle+1; 
                
                }
         }
           //不可二分时  两者相等或者在左边一位
           else
           {
             if(left==right)//相等
              {
                    if(target>nums[left])
                        {
                            return_number=left+1;
                            break;
                        } 
                    if(target<nums[left]) 
                        {
                            return_number=left;
                            if(left==0) return_number=0;
                            break;
                        }
                    if(target=nums[left]) 
                            {
                            return_number=left;
                            break;
                            }    
              }
             if(left==right-1)
             {
                    if(target<nums[left])
                    {
                    return_number=left;
                    if(left==0) return_number=0;
                    break;
                    }
                    if(target==nums[left]) 
                    {
                        return_number=left;
                        break;
                    }
                    

                    if(target>nums[left]&&target<nums[right])
                    {
                    return_number=left+1;
                    break;
                    }
                    if(target==nums[right])
                    {
                    return_number=right;
                    break;
                    }
                    
                    if(target>nums[right]) 
                    {
                    return_number=right+1;
                    break;
                    }


             }


           }  
        
    
    }
    
    return return_number;
    }
};

三、运行结果

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

你可能感兴趣的:(#,leetcode,算法,职场和发展)