首页 > 其他分享 >力扣-搜索插入元素

力扣-搜索插入元素

时间:2023-08-17 12:00:37浏览次数:47  
标签:mini target 索引 int nums 力扣 插入 搜索 目标值

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

请必须使用时间复杂度为 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
public int searchInsert(int[] nums, int target) {
    int mini = 0; // 最小索引
    int maxi = nums.length - 1; // 最大索引

    while (mini <= maxi) {
        int hai = (maxi + mini) / 2; // 中间索引

        if (nums[hai] == target) {
            // 如果中间元素等于目标值,直接返回中间索引
            return hai;
        } else if (target > nums[hai]) {
            // 如果目标值大于中间元素,在右半部分继续搜索
            mini = hai + 1; // 更新最小索引
        } else {
            // 如果目标值小于中间元素,在左半部分继续搜索
            maxi = hai - 1; // 更新最大索引
        }
    }

    // 循环结束时,插入位置为最小索引所在的位置
    return mini;
}

标签:mini,target,索引,int,nums,力扣,插入,搜索,目标值
From: https://blog.51cto.com/u_16199760/7120626

相关文章

  • Zotero插入参考文献的方法
    1、word中打开Zotero插件;2、将光标点到需要插入参考文献的位置;3、点击Add/EditCitation添加引用;4、弹出的搜索框中输入关键词,按上键在我的文库中搜索,选中要引用的文献后enter确定(一般在弹出搜索框后点击上面的zetero图标切换成经典视图,在经典视图中选中要引用的文献,点击OK,当......
  • 济南 CSP-J 刷题营 Day2 搜索
    SolutionT1排列计数原题链接4077:排列计数简要思路直接用next_permutation枚举全排列计算答案即可。完整代码#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'usingnamespacestd;intn,k;inta[100];intans;//可能的答案数量signedmain(){......
  • System.ArgumentException:“不能在多处添加或插入项“2”。必须首先将其从当前位置移
    ListViewItemitem=newListViewItem();foreach(Personpinperson1){item.SubItems[0].Text=p.Id.ToString();item.SubItems.Add(p.Name);......
  • 二叉搜索树(BST,binary search tree)
    对于静态查找可以用二分查找,将查找时间复杂度降到log2n。其中,虽然数据存储在线性的结构里,但我们事先对数据进行了处理,在查找的顺序过程中运用到判定树这样的结构,将线性上的查找过程转变为了在类似树上面的查找过程,其查找的效率就是树的高度。但如果查找的集合不仅有查找还......
  • 力扣-移除元素
    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明:为什么返回数值是......
  • Django博客开发教程:实现搜索页面
    搜索列表页的URL是:网站域名/s/搜索关键词,搜索页面,同样我们直接复制一份list.html页面,然后更名为search.html。视图函数代码:def search(request):    ss=request.GET.get('search')#获取搜索的关键词    list = Article.objects.filter(title__icontains=ss)#获取......
  • 第 358 场周赛 - 力扣(LeetCode)
    第358场周赛-力扣(LeetCode)2815.数组中的最大数对和-力扣(LeetCode)双for遍历即可classSolution{public:intmaxSum(vector<int>&nums){autore=[](intx){intma=0;while(x){if(x%10>ma)......
  • 代码随想录算法训练营第十三天|单调数列:滑动窗口最大值(力扣239.)、优先级队列:前k个高
    单调数列:滑动窗口最大值(力扣239.)给定滑动窗口的范围,求每个滑动窗口范围内的最大值使用单调队列实现对于最大值数字前面的数字不存入数列,对于最大值数字后面的数字存入数列中单调队列中数字的大小呈递减顺序pop(value):如果窗口移除的元素等于单调队列的队口元素,则pop;否则什......
  • JAVA向Mysql插入亿级数量数据各种方式效率对比
    研究mysql优化中查询效率,通过随机生成人的姓名、年龄、性别、电话、email、地址,向mysql数据库大量插入数据,便于用大量的数据测试SQL语句优化效率。生成过程中发现使用不同的方法,效率天差万别。1、先上Mysql数据库,随机生成的人员数据图。分别是ID、姓名、性别、年龄、Email、电话......
  • 力扣---833. 字符串中的查找与替换
    你会得到一个字符串 s (索引从0开始),你必须对它执行 k 个替换操作。替换操作以三个长度均为 k 的并行数组给出:indices, sources,  targets。要完成第 i 个替换操作:检查 子字符串  sources[i] 是否出现在 原字符串 s 的索引 indices[i] 处。如果没有出......