首页 > 其他分享 >35.搜索插入位置——学习笔记

35.搜索插入位置——学习笔记

时间:2023-03-20 21:22:59浏览次数:62  
标签:right target nums int 示例 mid 笔记 插入 35

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

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

示例1

输入: nums = [1,3,5,6], target = 5
输出: 2

示例2

输入: nums = [1,3,5,6], target = 2
输出: 1

示例3

输入: nums = [1,3,5,6], target = 7
输出: 4

提示:

  • 1 <= nums.length <= 104

  • -104 <= nums[i] <= 104

  • nums 为 无重复元素 的 升序 排列数组

  • -104 <= target <= 104

  • 来源:力扣(LeetCode)链接

题解

class Solution {
    public int searchInsert (int[] nums, int target) {
        if (target < nums[0]) {
            return 0;
        }
        if (target > nums[nums.length - 1]) {
            return nums.length;
        }
        int left = 0;
        int right = nums.length - 1;
        while (left <= right) {
            int mid = left + ((right - left) / 2);
            if (nums[mid] == target) {
                return mid;
            } else if (target < nums[mid]) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        /*
        最后一次循环的条件是left=right,
        如果此时target>num[mid],则left=mid+1,right=mid,此时target应该插入的位置为mid+1=right+1;
        如果此时target<num[mid],则left=mid,right=mid-1,此时target应该插入的位置为mid=right+1。
        */
        //return target > nums[mid] ? mid + 1 : mid;
        return right + 1;
    }
}

标签:right,target,nums,int,示例,mid,笔记,插入,35
From: https://www.cnblogs.com/benben-home/p/17213082.html

相关文章

  • 34.在排序数组中查找元素的第一个和最后一个位置——学习笔记
    题目:给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1,-1]。......
  • Android studio学习笔记
    wrap_content内容有多少,它的宽度有多少match_parent匹配父空间,上一级宽度多少,这一级多少使用宽度长度自定义的时候最好用dp,因为Android屏幕碎片化比较严重,在不同的系统......
  • 《操作系统导论》读书笔记1——CPU虚拟化,进程
    系列文章目录和关于我一丶CPU的虚拟化一个桃子,我们称之为物理(physical)桃子。但有很多想吃这个桃子的人,我们希望向每个想吃的人提供一个属于他的桃子,这样才能皆大欢喜。......
  • 【学习笔记】差分约束学习笔记
    简述差分约束系统,是由\(n\)个元素和\(m\)个约束条件构成的,其中每个约束条件形如\(x_i-x_j\ley_k\)。求解移项得到\(x_i\lex_j+y_k\),这样三角形不等式的形式类似......
  • 构建之法阅读笔记01
    第一章概论在这一章中,作者为我们介绍了一些关于软件工程的基本知识。①软件=程序+软件工程:正是因为对软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理......
  • 重链剖分学习笔记+做题记录
    一、理论知识首先放一张图(明显是OI-Wiki的):\(u\)的子节点\(p_1,p_2,\dots,p_k\)中子树最大的节点叫做重儿子,如有多个,任取其一,记作\(son_u\)。\(u\)除掉\(so......
  • C 栈模板及笔记
    文章目录​​Intro​​​​1.熟练掌握栈的定义、特性和栈的抽象数据类型,​​​​定义​​​​是限定仅在队尾进行插入或删除操作的先行比爱​​​​特性​​​​表尾端......
  • Fortran读书笔记(3)
    本篇文章为本人读气象出版社的fortran程序设计,若有侵权,请私信,本人立即删除数组的定义数组举例:integera(-5,5),b(20)character*8d(50)dimensiona(2,3)integera......
  • 在使用批量插入数据时报的错误
    :::infocom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserver......
  • 《深入理解计算机系统》第四章学习笔记 处理器体系结构
    一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构。不同的处理器“家族”,例如IntelIA32和x86-64、IBM/FreescalePower和ARM处理器家族,都有不同的ISA。一个......