力扣-数组-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;
    }
};
相关推荐
勤劳的进取家11 分钟前
如何构建多层决策树
人工智能·算法·机器学习
武昌库里写JAVA1 小时前
Redis 笔记(二)-Redis 安装及测试
数据结构·vue.js·spring boot·算法·课程设计
m0_694938011 小时前
Leetcode打卡:不含特殊楼层的最大连续楼层数
算法·leetcode·职场和发展
DogDaoDao1 小时前
leetcode 面试经典 150 题:字母异位词分组
算法·leetcode·面试·vector·哈希表·数据结构与算法·字母异位词分组
tt5555555555551 小时前
每日一题-两个链表的第一个公共结点
数据结构·算法·链表
jiayoushijie-泽宣2 小时前
VITA-1.5接近GPT4o水平的多模态模型:理解和跑通这套多模态实时交互系统
人工智能·算法·交互
Smark.2 小时前
(leetcode算法题)769. 最多能完成排序的块
算法·leetcode
Gpluso_od2 小时前
LeetCode -Hot100 - 73. 矩阵置零
算法·leetcode·矩阵
敲键盘的喵2 小时前
算法专题 —— 滑动窗口
算法
whpu_yb2 小时前
<代码随想录> 算法训练营-2025.01.04
算法