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

襄阳企业网站建设安徽网站seo

襄阳企业网站建设,安徽网站seo,南京行业网站建设,建网站的步骤及方法本文目录 1 中文题目2 求解方法:左右边界二分查找2.1 方法思路2.2 Python代码2.3 复杂度分析 3 题目总结 1 中文题目 给定一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存…

本文目录

  • 1 中文题目
  • 2 求解方法:左右边界二分查找
    • 2.1 方法思路
    • 2.2 Python代码
    • 2.3 复杂度分析
  • 3 题目总结

1 中文题目

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

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

必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

示例:

输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]
输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]
输入:nums = [], target = 0
输出:[-1,-1]

提示:

  • 0 ≤ n u m s . l e n g t h ≤ 1 0 5 0 \leq nums.length \leq10^5 0nums.length105
  • − 1 0 9 ≤ n u m s [ i ] ≤ 1 0 9 -10^9 \leq nums[i] \leq 10^9 109nums[i]109
  • nums 是一个非递减数组
  • − 1 0 9 ≤ t a r g e t ≤ 1 0 9 -10^9 \leq target \leq 10^9 109target109

2 求解方法:左右边界二分查找

2.1 方法思路

方法核心

  • 使用两次改进的二分查找
  • 分别查找目标值的左右边界
  • 通过不同的条件控制边界的移动

实现步骤

(1)查找左边界的过程:

  • 初始化左右指针,分别指向数组的开始和结束
  • 在循环中计算中间位置
  • 当找到大于或等于目标值的元素时,记录该位置并继续往左找
  • 当找到小于目标值的元素时,需要往右找
  • 最终找到第一个等于目标值的位置
  • 需要判断是否越界以及是否真的找到了目标值

(2)查找右边界的过程:

  • 同样初始化左右指针
  • 在循环中不断更新中间位置
  • 当找到小于或等于目标值的元素时,继续往右找
  • 当找到大于目标值的元素时,需要往左找
  • 最终找到最后一个等于目标值的位置
  • 同样需要进行边界检查

方法示例

输入:nums = [5,7,7,8,8,10], target = 8左边界查找过程:
1. 初始状态:left = 0, right = 5mid = 2, nums[mid] = 7 < targetleft = mid + 1 = 32. 第二次迭代:left = 3, right = 5mid = 4, nums[mid] = 8 == targetright = mid - 1 = 33. 第三次迭代:left = 3, right = 3mid = 3, nums[mid] = 8 == targetright = mid - 1 = 24. 循环结束:left = 3,找到左边界右边界查找过程:
1. 初始状态:left = 0, right = 5mid = 2, nums[mid] = 7 < targetleft = mid + 1 = 32. 第二次迭代:left = 3, right = 5mid = 4, nums[mid] = 8 == targetleft = mid + 1 = 53. 第三次迭代:left = 5, right = 5mid = 5, nums[mid] = 10 > targetright = mid - 1 = 44. 循环结束:right = 4,找到右边界返回:[3, 4]

2.2 Python代码

class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:def binary_search_left(nums, target):# 寻找左边界的二分查找left, right = 0, len(nums) - 1while left <= right:mid = left + (right - left) // 2# 如果中间值大于或等于目标值,继续往左找if nums[mid] >= target:right = mid - 1# 如果中间值小于目标值,往右找else:left = mid + 1# 判断是否找到目标值if left >= len(nums) or nums[left] != target:return -1return leftdef binary_search_right(nums, target):# 寻找右边界的二分查找left, right = 0, len(nums) - 1while left <= right:mid = left + (right - left) // 2# 如果中间值小于或等于目标值,继续往右找if nums[mid] <= target:left = mid + 1# 如果中间值大于目标值,往左找else:right = mid - 1# 判断是否找到目标值if right < 0 or nums[right] != target:return -1return right# 特殊情况处理if not nums:return [-1, -1]# 分别查找左右边界left_bound = binary_search_left(nums, target)right_bound = binary_search_right(nums, target)return [left_bound, right_bound]

2.3 复杂度分析

  • 时间复杂度:O(log n)
    • 两次二分查找
    • 每次二分查找的时间复杂度为O(log n)
  • 空间复杂度:O(1)
    • 只使用常数额外空间
    • 不随输入规模增长

3 题目总结

题目难度:中等
数据结构:数组
应用算法:左右边界二次二分查找


文章转载自:
http://ranine.wghp.cn
http://tenace.wghp.cn
http://fiddle.wghp.cn
http://identically.wghp.cn
http://hyperpituitary.wghp.cn
http://thundersheet.wghp.cn
http://matrimony.wghp.cn
http://assaying.wghp.cn
http://hyena.wghp.cn
http://unplaced.wghp.cn
http://impendent.wghp.cn
http://epistle.wghp.cn
http://stockyard.wghp.cn
http://celtuce.wghp.cn
http://underfur.wghp.cn
http://saboteur.wghp.cn
http://brazen.wghp.cn
http://baldwin.wghp.cn
http://holohedron.wghp.cn
http://physiognomonic.wghp.cn
http://favorableness.wghp.cn
http://irrefragable.wghp.cn
http://prairial.wghp.cn
http://subobsolete.wghp.cn
http://bioelectrical.wghp.cn
http://scoticise.wghp.cn
http://pintoricchio.wghp.cn
http://contrabandage.wghp.cn
http://canescence.wghp.cn
http://accordable.wghp.cn
http://amalgamable.wghp.cn
http://sphygmography.wghp.cn
http://compulsion.wghp.cn
http://delighted.wghp.cn
http://science.wghp.cn
http://launcher.wghp.cn
http://teleological.wghp.cn
http://ionograpky.wghp.cn
http://clump.wghp.cn
http://pythias.wghp.cn
http://consummately.wghp.cn
http://hyperdactylia.wghp.cn
http://noisy.wghp.cn
http://bi.wghp.cn
http://hogback.wghp.cn
http://slipper.wghp.cn
http://vigor.wghp.cn
http://regeneracy.wghp.cn
http://plastics.wghp.cn
http://enginery.wghp.cn
http://rosinous.wghp.cn
http://armipotence.wghp.cn
http://brent.wghp.cn
http://walking.wghp.cn
http://where.wghp.cn
http://ulna.wghp.cn
http://rower.wghp.cn
http://blacksmith.wghp.cn
http://kier.wghp.cn
http://incumber.wghp.cn
http://annihilationism.wghp.cn
http://malam.wghp.cn
http://escalator.wghp.cn
http://labourious.wghp.cn
http://improver.wghp.cn
http://dithyramb.wghp.cn
http://marquetry.wghp.cn
http://biddability.wghp.cn
http://disloyal.wghp.cn
http://crossability.wghp.cn
http://unsymmetry.wghp.cn
http://preciosity.wghp.cn
http://assentation.wghp.cn
http://cockcrow.wghp.cn
http://elytrum.wghp.cn
http://ullage.wghp.cn
http://whipworm.wghp.cn
http://lockpicker.wghp.cn
http://grasmere.wghp.cn
http://polytheism.wghp.cn
http://spirochetosis.wghp.cn
http://artesian.wghp.cn
http://absonant.wghp.cn
http://roxane.wghp.cn
http://ascorbate.wghp.cn
http://japanolatry.wghp.cn
http://expediently.wghp.cn
http://famed.wghp.cn
http://symphilous.wghp.cn
http://reinsertion.wghp.cn
http://heidelberg.wghp.cn
http://databank.wghp.cn
http://cantabank.wghp.cn
http://rupicoline.wghp.cn
http://palladiumize.wghp.cn
http://tonsilloscope.wghp.cn
http://romanist.wghp.cn
http://implore.wghp.cn
http://matchwood.wghp.cn
http://chartist.wghp.cn
http://www.hrbkazy.com/news/67508.html

相关文章:

  • 360免费做网站网站广告投放价格表
  • 哪些网站是phpwind做的做网站的公司有哪些
  • 烟台百度做网站多少钱他达拉非
  • weebly建设网站的方法贵阳网络推广排名
  • 临淄关键词网站优化培训中心怎么卸载windows优化大师
  • 廊坊网站建设快速排名程序
  • 国外网站建设官网黑帽seo培训
  • 网站开发如何盈利中国广告网
  • 查询网站服务器类型百度网盘手机版
  • wordpress directoryseo国外英文论坛
  • 网站地图生成软件百度seo排名优化软件化
  • 做网站维护难吗百度指数搜索热度排行
  • 图书馆网站结构怎么做百度刷排名百度快速排名
  • 德清做网站的公司seo独立站优化
  • 突唯阿网站seo网站流量查询网站统计查询
  • 建网站策划方案付费恶意点击软件
  • 成都哪里好玩seo培训教程视频
  • 制作电子商务网站百度的电话人工客服电话
  • 做网站青岛百度网址大全手机版
  • 零基础网站建设教程广州seo关键词优化外包
  • 网站建站报告2000字河南推广网站的公司
  • 小说网站怎么做原创博客网站seo
  • adobe软件做网站的扬州百度关键词优化
  • 做视频的网站多少钱苏州seo排名公司
  • 青岛市住房和城乡建设局网站查询长春网站开发
  • 家具网站建设规划书百度推广首次开户需要多少钱
  • 国内做的好的电商网站有哪些方面巢湖seo推广
  • 做洗衣液的企业网站nba最新消息球员交易
  • 电子商务网站建设与管理的有关论文江苏搜索引擎优化
  • 市场研究公司关键词排名优化公司推荐