LeetCode热题100(搜索插入位置)

题目描述

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

代码:

java 复制代码
class Solution {
    public int searchInsert(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        while(left <= right){
            int temp = (right + left) /2;
            if(nums[temp] > target){
                right = temp - 1;
            }else if(nums[temp] < target){
                left = temp + 1;
            }else{
                return temp;
            }
        }
        return left;
    }
}

思路复盘:

1.二分法的思路,注意最后返回的是left,分析原因,此时left > right才会跳出循环,第一种情况left = temp+1之后导致的跳出循环,target大于left和right所在的位置的值,往后移一位便是插入的位置。第二种情况,right = temp - 1导致的,target小于left和right所在的位置,返回之前的right所在的位置,也就是left。

相关推荐
Tisfy4 分钟前
LeetCode 0865.具有所有最深节点的最小子树:深度优先搜索(一次DFS + Python5行)
算法·leetcode·深度优先·dfs·题解
王老师青少年编程6 分钟前
信奥赛C++提高组csp-s之二分图
数据结构·c++·二分图·csp·信奥赛·csp-s·提高组
Q741_1478 分钟前
C++ 队列 宽度优先搜索 BFS 力扣 429. N 叉树的层序遍历 C++ 每日一题
c++·算法·leetcode·bfs·宽度优先
Yzzz-F9 分钟前
P4145 上帝造题的七分钟 2 / 花神游历各国[线段树 区间开方(剪枝) + 区间求和]
算法·机器学习·剪枝
Zzz不能停11 分钟前
堆排序算法及大小堆区别
数据结构·算法
冰冰菜的扣jio19 分钟前
Redis高级数据结构
数据结构·redis·bootstrap
zd84510150022 分钟前
stm32f407 电机多轴联动算法
stm32·单片机·算法
代码游侠24 分钟前
应用——Linux FrameBuffer图形显示与多线程消息系统项目
linux·运维·服务器·开发语言·前端·算法
Eloudy24 分钟前
矩阵张量积(Kronecker积)的代数性质与定理
算法·量子计算
多米Domi01135 分钟前
0x3f 第25天 黑马web (145-167)hot100链表
数据结构·python·算法·leetcode·链表