力扣-数组-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;
    }
};
相关推荐
Swift社区3 小时前
LeetCode 394. 字符串解码(Decode String)
算法·leetcode·职场和发展
tt5555555555553 小时前
LeetCode进阶算法题解详解
算法·leetcode·职场和发展
让我们一起加油好吗3 小时前
【基础算法】DFS中的剪枝与优化
算法·深度优先·剪枝
Q741_1474 小时前
C++ 模拟题 力扣495. 提莫攻击 题解 每日一题
c++·算法·leetcode·模拟
Felven5 小时前
A. Be Positive
算法
小O的算法实验室5 小时前
2026年COR SCI2区,自适应K-means和强化学习RL算法+有效疫苗分配问题,深度解析+性能实测,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
青岛少儿编程-王老师5 小时前
CCF编程能力等级认证GESP—C++7级—20250927
数据结构·c++·算法
夏鹏今天学习了吗6 小时前
【LeetCode热题100(39/100)】对称二叉树
算法·leetcode·职场和发展
天选之女wow7 小时前
【代码随想录算法训练营——Day34】动态规划——416.分割等和子集
算法·leetcode·动态规划
Boop_wu7 小时前
[数据结构] 哈希表
算法·哈希算法·散列表