当前位置: 首页 > news >正文

济南做网站比较好的公司数据分析软件

济南做网站比较好的公司,数据分析软件,seo项目完整流程,建设单位经常去哪个网站题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 …

题目描述

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

请必须使用时间复杂度为 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

解题思路

二分查找的时间复杂度是 O(log n),其中 n 是数组的长度。所以可实现一个二分查找算法,用于在排序数组中查找一个目标值,并返回目标值的索引或者它应该被插入的位置。

代码

/*** @param {number[]} nums* @param {number} target* @return {number}*/
var searchInsert = function(nums, target) {let left = 0, right = nums.length - 1; // 闭区间 [left, right]while (left <= right) { // 区间不为空// 循环不变量:// nums[left-1] < target// nums[right+1] >= targetconst mid = Math.floor((left + right) / 2);if (nums[mid] < target) {left = mid + 1; // 范围缩小到 [mid+1, right]} else {right = mid - 1; // 范围缩小到 [left, mid-1]}}return left;
}

代码分析

  1. 初始化两个指针 leftright,分别指向数组的起始和结束位置,形成一个闭区间 [left, right]

  2. 进入一个 while 循环,条件是 left 小于等于 right,即区间不为空。

  3. 在循环内部,计算中间位置 mid,使用 Math.floor((left + right) / 2) 来确保 mid 是一个整数。

  4. 比较 nums[mid]target 的值:

    • 如果 nums[mid] 小于 target,则说明 target 可能在 mid 的右侧,因此更新 leftmid + 1,这样新的搜索区间就变成了 [mid + 1, right]
    • 如果 nums[mid] 大于或等于 target,则说明 target 可能在 mid 的左侧或 mid 本身,因此更新 rightmid - 1,这样新的搜索区间就变成了 [left, mid - 1]
  5. while 循环结束时,left 指针将指向 target 应该被插入的位置。如果 target 在数组中存在,left 将指向 target 的索引;如果 target 不存在,left 将指向 target 应该被插入的位置,以保持数组的排序。

  6. 最后,函数返回 left 作为结果。

这个算法的关键在于,每次迭代都会将搜索区间减半,这是通过比较中间元素和目标值来实现的。如果目标值在数组中,算法最终会找到它;如果目标值不在数组中,算法会找到目标值应该被插入的位置,以保持数组的排序。

这里可以自行走一遍示例,因为最后返回的是left,而判断最后是因为right减少导致循环结束,所以得到正确结果

http://www.hrbkazy.com/news/29389.html

相关文章:

  • 在360上做网站怎么样品牌整合营销
  • C#如何做简易网站北京seo推广系统
  • 网站建设设计公司哪家好seo网站地图
  • 做公司企业网站优化大师在哪里
  • 响水做网站徐州seo管理
  • 村级网站模板关键词搜索优化
  • 公司域名不变网站做变动百度统计数据分析
  • 网站 验证百度怎么投放自己的广告
  • 做盗版影视网站违法吗云南网络推广
  • 六安市城乡建设网站网络销售每天做什么
  • 网站空间速度测试推广方案万能模板
  • 郑州网站网络推广公司网络seo优化公司
  • 中英文切换的网站怎么做广告平台网
  • 免费做拍卖网站中国国家培训网
  • 文件上传到沧州建设局网站关键词优化方法有什么步骤
  • 南通建公司网站济南百度seo
  • 企业网站制作公司盈利青岛网站建设优化
  • 陵水网站建设chinaz站长素材
  • 网站框架图怎么做seo外包多少钱
  • 怎么用电脑做网站主机舆情服务网站
  • 明年做哪个网站致富友情链接可以随便找链接加吗
  • 北京专业建设网站公司哪家好seo排名点击
  • 前端和做网站南京seo建站
  • 湛江专业建站上海抖音seo
  • 哪里找高清图片素材百度seo关键词排名 s
  • 常州专业做网站公司百度域名
  • 网站和微信公众号建设360安全浏览器
  • 网站建设报价兴田德润在哪里什么软件可以推广
  • 蚌埠网站制作公司哪家好国外seo网站
  • 信用湘潭网站自助建站系统平台