力扣-数组-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;
    }
};
相关推荐
Tech Synapse22 分钟前
基于Surprise和Flask构建个性化电影推荐系统:从算法到全栈实现
python·算法·flask·协同过滤算法
終不似少年遊*29 分钟前
国产之光DeepSeek架构理解与应用分析04
人工智能·python·深度学习·算法·大模型·ds
天天扭码29 分钟前
一分钟解决 | 高频面试算法题——最大子数组之和
前端·算法·面试
杰杰批34 分钟前
力扣热题100——矩阵
算法·leetcode·矩阵
明月看潮生37 分钟前
青少年编程与数学 02-016 Python数据结构与算法 28课题、图像处理算法
图像处理·python·算法·青少年编程·编程与数学
_GR1 小时前
2025年蓝桥杯第十六届C&C++大学B组真题及代码
c语言·数据结构·c++·算法·贪心算法·蓝桥杯·动态规划
心想事“程”1 小时前
决策树详解+面试常见问题
算法·决策树·机器学习
照海19Gin2 小时前
数据结构中的宝藏秘籍之广义表
c语言·数据结构·算法
小oo呆3 小时前
【自然语言处理与大模型】模型压缩技术之剪枝
算法·机器学习·剪枝
bloxd yzh3 小时前
筛选法(埃氏筛法)C++
数据结构·算法