首页 > 其他分享 >力扣搜索插入位置

力扣搜索插入位置

时间:2022-12-30 12:23:59浏览次数:72  
标签:xiabiao 下标 target 该下 nums int 力扣 插入 搜索

目录

题目

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

请必须使用时间复杂度为 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)
链接:https://leetcode.cn/problems/search-insert-position
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

  • 要找到一个下标,该下标的值>=目标,且下标-1的值<目标
  • 1.设定初始范围
  • 2.判断条件
  • 2.1该下标的值>=目标,且下标-1的值<目标,满足该条件,即是答案, 直接输出即可
  • 2.2该下标的值>=目标,"但下标-1的值>目标",说明中值太大了,需要减少范围最大值
  • 2.3"该下标的值<目标",说明中值太小了,需要增加范围最小值
  • 3.边界条件
  • 3.1如果目标是下标0的值,此时下标-1的值不存在,要怎么办?
  • 3.2如果目标比数组内最大的值都大,怎么办?
  • 解决方法
  • 分别加个特殊判断条件,直接跳出即可
  • 1.当目标小于等于下标0的值,直接返回下标0
  • 2.当目标大于等于下标最大的值,直接放回最大的下标+1

代码

点击查看代码
int searchInsert(int* nums, int numsSize, int target){
int left,right,middle,shuchu;   //分别是范围最小值,范围最大值,范围中值,输出值
int search(int xiabiao)
{
    if(nums[xiabiao]>=target&&nums[xiabiao-1]<target)
    {
        shuchu = xiabiao;   //储存输出值
        return 0;
    }
    else if(nums[xiabiao]>=target&&nums[xiabiao-1]>=target)
    {
        right=middle-1;
    //  该下标的值>=目标,"但下标-1的值>目标",说明中值太大了,需要减少范围最大值
    }
    else if(nums[xiabiao]<target)
    {
        left=middle+1;
    //  "该下标的值<目标",说明中值太小了,需要增加范围最小值
    }
    middle=(left+right)/2;
    search(middle);
    return 0;
}
//  如果目标是下标0的值,此时下标-1的值不存在,要怎么办?
//  分别加个特殊判断条件,直接跳出即可
//  当目标小于等于下标0的值,直接返回下标0
if(target<=nums[0])
{
    return 0;
}
//  当目标大于等于下标最大的值,直接放回最大的下标+1
else if(target>nums[numsSize-1])
{
    return numsSize;
}
//设定初始范围
else
{
    left=0;
    right=numsSize-1;
    middle=(left+right)/2;
    search(middle);
}
return shuchu;  //返回输出值
}

本篇扯淡

  • 话说我写这里的是为什么呢?如果只是想写题解的话,发在力扣那不就行了,何必在我这再发一次呢?
  • 仔细思索一番后,得出结论,这是对我学习过程的记录,他证明了我的存在,见证我的曾经
  • 毕竟对我而言,个人博客就如同自己的一个小天地似的,就算内容没有意义,但只要存在内容,那对我而言,就已经很有意义了
  • 所以接着做吧,无论好坏,相信自己,总会逐渐变好的,等我学的差不多了,有余力了,也会把内容给优化的。
  • 最后,如果有谁闲的来看我扯淡,那我祝你生活愉快,过得开心~(* ̄︶ ̄)

标签:xiabiao,下标,target,该下,nums,int,力扣,插入,搜索
From: https://www.cnblogs.com/aduiduidui/p/17014594.html

相关文章

  • C# 提取Word中插入的多媒体文件(视频、音频)
    在Word中可将文件通过OLE对象嵌入的方式插入到文档,包括Word、excel、PDF、PPT、图片、宏文件、文件包等在内的多种文件类型。对文档中已插入的文档对象,也可通过本文中的方法......
  • 在Excel表里面插入背景图
    工作中我们会经常用到MSExcel,通常我们打开MSExcel,里面的工作表都是空白单调的背景。当然了,MSExcel可以在工作簿里面插入背景图片。那么问题来了,如果你没有安装Microsoft......
  • 力扣二分查找
    题目给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,......
  • 【LeetCode数组#1二分查找】二分查找、搜索插入、在排序数组中查找元素的第一个和最后
    二分查找题目力扣704题目链接给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。......
  • 二分搜索与二分答案
    二分的本质序列要满足有序性或者有有序的性质:有单调性一定可以二分,没有单调性也可以进行二分;下面是两个模板;tips:mid=男左女右,男加1boolcheck(intx){/*...*/}//......
  • ArcGIS Pro2.8插入公里网
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingArcGIS.Core.CIM;usingArcGIS.Core.D......
  • excel、word、PPT中插入PDF文件不显示图标问题
    插入PDF对象,不显示正确的PDF图标临时解决办法:手动修改对象图标具体位置,可在C:\Windows\Installer目录下搜索PDFFile_8.ico尝试如下操作:手动复制生成C:\Windows\SysW......
  • 查找蓝牙WiFi功能,搜索名字并列举出来
    先有一个概念,蓝牙分为普通蓝牙和低功耗(BLE)蓝牙,低功耗蓝牙激活时信号和普通蓝牙信号一样,低功耗时必须搜索低功耗蓝牙信号如果使用普通代码搜索,不能搜索到低功耗蓝牙信号......
  • KG4Py:Python代码知识图谱和语义搜索的工具包
    如何构建Python的代码知识图谱,又该如何进行搜索呢?现在的项目程序中存在着大量重复的代码片段,尤其是在软件开发的时候。在本文中,我们提出了一个工具包(KG4Py),用于在GitHub存储......
  • 力扣---88. 合并两个有序数组
    给你两个按非递减顺序排列的整数数组 nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按......