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

济南建站服务商下载百度网盘app最新版

济南建站服务商,下载百度网盘app最新版,苏州网站开发服务,深圳网站建设 东毅虎题目: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置 方法一:二分查找 假设题意是在排序数组中寻找是否存在一个目标值,则可以…

题目:

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


方法一:二分查找

假设题意是在排序数组中寻找是否存在一个目标值,则可以利用二分法在Ologn的时间内找到是否存在目标值,但这题还有个额外条件,即如果不存在数组中的时候需要返回按顺序插入的位置。需要对二分法做些修改

考虑这个插入的位置pos,它成立的条件为:

nums[pos-1]<target<=nums[pos]

其中nums代表排序数组,由于如果存在这个目标值,返回的索引也是pos,即可以将两个条件合并后并得出最后的目标:在一个有序数组中找到第一个大于等于target的下标

问题转化到这个,直接套用二分法即可,即不断用二分法逼近查找第一个大于等于target的下标,ans初始设置为数组长度可以省略边界条件的判断,因为存在一种情况是target大于数组中的所有数,此时需要插入到数组长度的位置。

class Solution(object):def searchInsert(self, nums, target):""":type nums: List[int]:type target: int:rtype: int"""left=0  #指向数组的起始位置(索引0)right=len(nums)-1  #指向数组的末尾位置(最后一个元素的索引)while left<=right:  #左指针不大于右指针。这保证了搜索区间始终有效middle=(left+right)//2 #计算中间位置的索引if nums[middle]<target: #如果中间元素小于目标值,说明目标值应该在右半部分left=middle+1 #将左指针移动到中间位置右侧elif nums[middle]>target: #如果中间元素大于目标值,说明目标值应该在左半部分right=middle-1  #将右指针移动到中间位置左侧else:return middlereturn right+1  #循环结束还没找到目标值,right+1就是它应该插入的位置1

时间复杂度:O(logn)其中n为数组的长度

空间复杂度:O(1)

源自力扣官方题解

http://www.dtcms.com/wzjs/18360.html

相关文章:

  • 怎样搭建免费网站线上营销推广公司
  • 电商 做图 网站衡水seo培训
  • 网站建设比较好关键词排名客服
  • 云南省建设厅标准员网站网络优化的三个方法
  • 那里有帮做网站的重庆seo报价
  • 成都网站优化推广海外新闻app
  • 江苏省城乡建设委员会的网站百度服务中心
  • 恩施建设网站网站域名ip地址查询
  • 企业网站设计哪家好宁波seo服务推广
  • 邯郸做移动网站找谁郑州网络推广公司排名
  • dw做简易表格网站seo技术培训中心
  • 外发加工网站app注册接单平台
  • 幼儿园网站模板html域名反查
  • 网站开发教学产品推广策划书
  • 做的精美的门户网站推荐武汉整站seo数据上云
  • 怀远网站建设成都seo优化
  • 乡镇府建设网站网站没有友情链接
  • 如何做阅读网站唐山seo排名
  • 怎么在互联网做网站新冠不易感染三种人
  • 提供温州手机网站制作哪家好买域名
  • 群辉做网站百度seo关键词优化公司
  • 做产品批发的网站有哪些apple私人免费网站怎么下载
  • 做外汇需要关注的新闻网站seo的含义是什么意思
  • 建站公司哪家好 知道万维科技低价刷赞网站推广
  • 上海加盟网网站建设信息流推广的竞价机制是
  • 厦门网站制作开发收费无限制访问国外的浏览器
  • 什么网站可以做推广的百度竞价价格
  • 建设银行网站www.ccb.com深圳网络推广seo软件
  • wordpress获取部分分类西安seo网站排名
  • 免费做推广的网站有哪些企业管理系统