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

网站开发代码友情链接软件

网站开发代码,友情链接软件,合肥专业网站制作,wordpress 历史上今天题目: 给一个按照非递减顺序排列的整数数组nums,和一个目标值target,请找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值target,返回[-1,-1] 方法一:二分查找 直观的思路肯定是从前往后遍历一遍。用两个变量记录第一次和最后一次…

题目:

给一个按照非递减顺序排列的整数数组nums,和一个目标值target,请找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值target,返回[-1,-1]


方法一:二分查找

直观的思路肯定是从前往后遍历一遍。用两个变量记录第一次和最后一次遇见 target 的下标,但这个方法的时间复杂度为 O(n),没有利用到数组升序排列的条件

由于数组已经排序,因此整个数组是单调递增的,可以利用二分法来加速查找的过程。

考虑 target 开始和结束位置,要找的就是数组中「第一个等于 target 的位置」(记为 leftIdx)和「第一个大于 target 的位置减一」(记为 rightIdx)

二分查找中,寻找 leftIdx 即为在数组中寻找第一个大于等于 target 的下标,寻找 rightIdx 即为在数组中寻找第一个大于 target 的下标,然后将下标减一。两者的判断条件不同,定义binarySearch(nums, target, lower) 表示在 nums 数组中二分查找 target 的位置,如果 lower 为 true,则查找第一个大于等于 target 的下标,否则查找第一个大于 target 的下标。

因为 target 可能不存在数组中,因此需要重新校验得到的两个下标 leftIdx 和 rightIdx,看是否符合条件,如果符合条件就返回 [leftIdx,rightIdx],不符合就返回 [−1,−1]

class Solution(object):def searchRange(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""leftIdx=self.binarySearch(nums,target,True)#查找左边界,第三个参数True表示查找左边界rightIdx=self.binarySearch(nums,target,False)-1#第三个参数False表示查找右边界,结果减1if leftIdx<=rightIdx and rightIdx<len(nums) and nums[leftIdx]== target and nums[rightIdx] == target:  #判断范围有效return [leftIdx,rightIdx]return [-1,-1]def binarySearch(self,nums,target,lower):#输入有序数组,目标值,布尔值left=0  #初始化二分查找的左右指针right=len(nums)-1ans=len(nums) #初始化答案为数组长度(表示目标值可能插入的位置)while left<=right:mid=(left+right)//2  # 计算中间位置if nums[mid]>target or (lower and nums[mid]>=target):
#查找左边界时(lower=True),当nums[mid] >= target时移动右指针
#查找右边界时(lower=False),只有当nums[mid] > target时才移动右指针right=mid-1ans=mid  ## 更新答案为当前的 midelse:left=mid+1  ## 目标值大于 mid 的值,移动左边界return ans

时间复杂度: O(logn) ,其中 n 为数组的长度。二分查找的时间复杂度为 O(logn),一共会执行两次,因此总时间复杂度为 O(logn)

空间复杂度:O(1)

作者:力扣官方题解
 

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

相关文章:

  • javaweb做的网站有哪些谷歌搜索引擎首页
  • 工信部公布网站备案拍照背景全国疫情最新消息
  • 网站需求分析是在建站的什么阶段做的_为什么要做?好搜搜索
  • 合肥做按摩网站国内b站不收费网站有哪些
  • 成都装饰公司网站建设想在百度做推广怎么做
  • 成都大丰网站建设例表网seo搜索引擎优化5
  • 做文案用什么网站东莞好的网站国外站建设价格
  • 成都网站建设 川icp备网络营销的推广方法有哪些
  • 织梦模板库台州seo网站排名优化
  • 做网站+广告费+步骤百度健康人工客服电话24小时
  • 网站推广律师关键词有哪些一个域名大概能卖多少钱
  • 安徽省住房城乡建设厅网站电工无锡今日头条新闻
  • 网站建设做的快企业软文范例
  • 高端建站的公司必应搜索
  • 网站建设哪家有名九江seo优化
  • 如何免费推广网站网络营销的六大特征
  • 小区百货店网怎么做网站镇江seo公司
  • 怎样下载做网站的软件打开百度搜索
  • 深圳网站建设合同上海关键词优化外包
  • 深圳做营销网站公司网推项目接单平台
  • 南宁网站建设王道下拉強友情链接方面pr的选择应该优先选择的链接为
  • 电商网站建设选迅法网百度爱采购怎么优化排名
  • 做网站站长先把作息和身体搞好东莞网站建设优化推广
  • 性价比最高网站建设电话新东方在线网上课程
  • 网站建设要学哪些软件有哪些方面深圳网站推广
  • 计算机网站建设论文范文深圳关键词优化报价
  • 阿里云网站托管郑州有没有厉害的seo顾问
  • 网站开发公司巨推app拉新推广代理
  • 南阳网站建设口碑企业网站seo诊断报告
  • 程家桥街道网站建设1688如何搜索关键词排名