Search Insert Position

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

        if(len < 1) return 0;
        // for 1 number
        if(len == 1){
            if(target < nums[0]){
                return 0;
            }
            else if(target == nums[0]){
                return 0;
            }
            else{
                return 1;
            }
        }

        while(left + 1 < right){
            int mid = left + (right-left)/2;

            if(target == nums[mid]){
                return mid;
            }
            else if(target > nums[mid]){
                left = mid;
            }
            else{
                right = mid;
            }
        }

        // for 2 nums
        if(target == nums[left]){
                return left;
        }
        else if(target == nums[right]){
                return right;
        }
        else if(target < nums[left]){
                return 0 ;
        }
        else if(target > nums[right]){
                return right + 1;
        }
        else{
            return right;
        }
    }
};