力扣-数组-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;
    }
};
相关推荐
Luo_LA17 分钟前
【排序算法对比】快速排序、归并排序、堆排序
java·算法·排序算法
AI技术控22 分钟前
机器学习算法实战——天气数据分析(主页有源码)
算法·机器学习·数据分析
oioihoii30 分钟前
C++20 中的同步输出流:`std::basic_osyncstream` 深入解析与应用实践
c++·算法·c++20
猪猪成32 分钟前
【图论】FLOYD弗洛伊德算法-最短路径
学习·算法·图论
HR Zhou36 分钟前
群体智能优化算法-粒子群优化算法(Particle Swarm Optimization, PSO,含Matlab源代码)
算法·matlab·优化·智能优化算法
SsummerC44 分钟前
【leetcode100】搜索二维矩阵
python·线性代数·leetcode·矩阵
SylviaW081 小时前
python-leetcode 48.括号生成
算法·leetcode·职场和发展
飞奔的马里奥2 小时前
力扣算法Hot100——75. 颜色分类
java·算法·leetcode
Chen--Xing2 小时前
洛谷 P3986 斐波那契数列
python·算法
平凡而伟大(心之所向)3 小时前
机器学习中的 K-均值聚类算法及其优缺点
算法·机器学习·均值算法