【算法刷题】【JavaScript】搜索插入位置

前端JavaScript力扣HOT100【51-100】 注:纯手打,如有错误欢迎评论区交流!编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除!本文章将不定时更新,敬请期待!!!!! 阅读详情

搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。

Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You must write an algorithm with O(log n) runtime complexity.

思路:

符合二分查找的条件:

  1. 所有元素都是有序排列。
  2. 所有元素都不重复。

需要注意的是这道题返回情况有四种:

  1. 目标值在数组所有元素之前:return right + 1。
  2. 目标值等于数组中某一个元素:return middle。
  3. 目标值插入在数组中:return right + 1。
  4. 目标值在数组所有元素之后:return right + 1。

代码:

var searchInsert = function(nums, target) {
    let left = 0, right = nums.length - 1;
    while(left <= right){
        let middle = Math.floor((right - left) / 2) + left;
        if(nums[middle] === target){
            return middle;
        }else if(nums[middle] < target){
            left = middle + 1;
        }else{
            right = middle - 1;
        }
    }
    return right+1;
};
利用CiteSpace实现知网专利文献的高效计量与可视化分析 本文详细介绍了如何利用CiteSpace软件对中国知网(CNKI)的专利文献进行高效的文献计量与可视化分析。文章提供了从数据获取、格式转换、参数设置到图谱解读的完整工作流,旨在帮助研究者快速掌握该工具,从而洞察技术领域的研究热点、核心机构、学者合作网络及发展趋势,提升专利情报分析效率。 阅读详情

相关推荐

Vivado 2018.3 安装步骤及 license 获取

本文的主要内容是介绍 Vivado 2018.3 版本的安装步骤及其 license 的获取与加载。

西岸贤 4万+

js算法-搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入位置。 请必须使用时间复杂度为 O(log n) 的算法。 解法: 无脑判断大法~ var searchInsert = function(nums, target) { for(let i=0;i<nums.length;i++){ if(target>nums[i]&&target<nums[i+1]){ re

qq_42526440的博客 243

35. 搜索插入位置

Java class Solution { /* * 从后往前遍历,因为数组是有序地 ,只有两种情况,存在这个值或者不存在,遍历到比这个值小的数值时说明数组中不存在这个值,所以需要插入插入位置是i+1 */ public int searchInsert(int[] nums, int target) { int len = nums.length; int i = len - 1; for (; i >= 0;) { // 如果存在target就返...

漠宸离若的博客 347

JavaScript——leetcode算法入门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 示例 4: 输入: nums = [1,3,5,6], t

Teresa的前端海底乐园 368

JavaScript 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5,6], 0 输出: 0 思路 循环 对比 比前面的大 你后面的小于或者等于 这就得到了target<= nums...

wanghongpu9305的博客 406

JS搜索插入位置(二分查找)

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

leleshuo 600

js检索需要插入位置 leetcode

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入位置。 请必须使用时间复杂度为 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 示例 4: 输入: nums = [1,3,5,6], tar

CC酱写前端的博客 159

LeetCode---算法数组JavaScript搜索插入位置(号: 35)

1. 问描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入位置。 请必须使用时间复杂度为 O(log n) 的算法。 2. 解思路 循环数组,如果数组元素等于目标值target,将元素索引i输出,若不想等,则判断是否数组元素是否大于目标值target,大于返回索引i,小于则跳出本次循环,进入下一次循环。若循环到最后,仍没有与目标值相等或者比目标值target大的数组元素(数组元素,都小于目标值target),则插入索引在数组的最后。

honeymoon_的博客 510

冲冲冲,力扣javascript——数组总结

阶段性力扣总结,为秋招做准备~

qq_41040989的博客 1437

LeetCode数组专栏(简单:1-20)

为了找工作不得不加油呀o(╥﹏╥)o,但是Leetcode完就忘,所以特开一帖,记录我的过程。每道目标后边的括号中对应的leetcode号。 这一遍我打算使用js去,因为当前的目标是找到一个前端的实习,找到实习之后就可以没事去和朋友玩耍了(*^ ▽ ^*),附上网址:https://leetcode-cn.com/problems 两数之和(1)   这道我一开...

封狼居胥 535

JavaScript算法探索:精准定位——搜索插入位置

通过本次对搜索插入位置算法的深入探索,我们不仅掌握了二分查找的核心思想,还领略了其在不同场景下的灵活应用。无论是直接寻址还是优雅的递归实现,关键在于理解其精髓,即如何高效地缩小搜索空间。在未来的算法征途中,你可能会遇到更多复杂挑战,但记住,算法的魅力往往隐藏在这些看似简单却功能强大的逻辑之中。那么,你在实际项目中是否有遇到过关于搜索插入的有趣应用或棘手问呢?欢迎在评论区分享你的见解或疑问,让我们共同探讨,不断拓展JavaScript算法的边界。欢迎来到我的博客,很高兴能够在这里和您见面!

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1652

【JS版算法笔记02】搜索插入位置

目描述(注: leetcode传送门): 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。 如果目标值不存在于数组中,返回它将会被按顺序插入位置。(可以假设数组中无重复元素) 我看评论区很多JS的小伙伴都选择了indexOf()方法,但我在做这道目时使用了findIndex()方法: ,也挺好用: var searchInsert = function(nums, target) { //如果目标值在数组内,则返回其索引 let isEqual = (item)

Wonder_Risk的博客 387

javascript/js 算法练习 之 搜索插入位置

目: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5...

csdn317341539的博客 305

js + leetcode:No.35.搜索插入位置

目35: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5,6], 0 输出: 0 解法...

qq_34425377的博客 370

JavaScript 力扣搜索插入位置】(5)

目: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入位置。 你可以假设数组中无重复元素。 /** * @param {number[]} nums * @param {number} target * @return {number} */ var searchInsert = function(nums, ta...

野生松 278

LeetCode】[35] 搜索插入位置

LeetCode传送门 /* * @lc app=leetcode.cn id=35 lang=java * * [35] 搜索插入位置 * * https://leetcode-cn.com/problems/search-insert-position/description/ * * algorithms * Easy (42.34%) * Total Accepted...

Watson的博客 213

(删除倒数第N个节点、搜索插入位置、二进制求和、求x平方根、爬楼梯)

删除倒数第N个节点、搜索插入位置、二进制求和、求x平方根、爬楼梯

m0_62508027的博客 768

LeetCode-搜索插入位置【剖析二分查找法】

二分查找过程 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 算法要求 ...

小名同学 21万+

LeetCode 35. 搜索插入位置(二分查找)—— JavaScript

链接:https://leetcode-cn.com/problems/search-insert-position/ 描述: 解思路: 对于查找索引,用正常的二分查找即可。 对于查找插入位置,在二分查找的时候,记录第一个大于该元素的元素下标即可。 代码实现: /** * @param {number[]} nums * @param {number} target * @return {number} */ var searchInsert = function(nums,

ySFRaabbcc的博客 390

力扣第35搜索插入位置

一、目:35. 搜索插入位置

qq_39939541的博客 1010

TD序列 TD组合 主图源码通达信指标公式源码.doc

TD序列 TD组合 主图源码通达信指标公式源码.doc

上一篇: 【算法刷题】【JavaScript】移除元素
RECHAHotTee
博客等级 码龄5年 0粉丝 3原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值