力扣-数组-35 搜索插入位置

解析

时间复杂度要求,所以使用二分的思想,漏掉了很多问题,这里记录

  1. 在left-right=1时,已经找到了插入位置,但是没有赋值,然后break,所以导致一直死循环。

    cpp 复制代码
    if(right - left == 1){
        result = right;
        break;
    }
  2. 在和最右侧数比较时,漏掉了相等时就直接找到,所以在数组是[1,3],target=1时,应该返回下标0

    cpp 复制代码
    if(target <= nums[left]){
         result = left;
         break;
    }               
  3. 长度为0时,不进入循环了,所以循环条件是left <= right。

代码

cpp 复制代码
class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size()-1;
        int result = 0;
        while(left <= right){
            int mid = (left+right)/2;
            if(target <= nums[left]){
                result = left;
                break;
            }
            if( nums[right] < target){
                result = right+1;
                break;
            }
            if( nums[right] == target){
                result = right;
                break;
            }
            if(right - left == 1){
                result = right;
                break;
            }
            if(nums[mid] < target){
                left = mid;
            }else if(target < nums[mid]){
                right = mid;
            }else if(nums[mid] == target){
                result = mid;
                break;
            }
            
        }
        return result;
    }
};
相关推荐
绛洞花主敏明6 小时前
Go切片的赋值
c++·算法·golang
10001hours8 小时前
初阶数据结构.1.顺序表.通讯录项目(只有源码和注释)
数据结构·算法
Emilia486.10 小时前
八大排序算法
算法·排序算法
blammmp10 小时前
算法专题十九:记忆化搜索(暴搜->记忆化搜索)
算法·深度优先·记忆化搜索
MicroTech202511 小时前
边缘智能的创新:MLGO微算法科技推出基于QoS感知的边缘大模型自适应拆分推理编排技术
科技·算法·ai
王哈哈^_^13 小时前
【数据集】【YOLO】目标检测游泳数据集 4481 张,溺水数据集,YOLO河道、海滩游泳识别算法实战训练教程。
人工智能·算法·yolo·目标检测·计算机视觉·分类·视觉检测
巴里巴气13 小时前
第73题 矩阵置零
线性代数·算法·矩阵
voice67013 小时前
密码学实验二
算法·密码学·哈希算法
Blossom.11814 小时前
把AI“编”进草垫:1KB决策树让宠物垫自己报「如厕记录」
java·人工智能·python·算法·决策树·机器学习·宠物
寂静山林14 小时前
UVa 10989 Bomb Divide and Conquer
算法