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

南京 推广 网站建设google官网下载

南京 推广 网站建设,google官网下载,网页转微信小程序,提供东莞网站建设价格题目: 整数数组nums按升序排列,数组中的值互不相同 在传递给函数之前,nums在预先未知的某个小标K上进行了旋转,使数组变为[nums[k], nums[k1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]],小标从0开始计数。…

题目:

整数数组nums按升序排列,数组中的值互不相同

在传递给函数之前,nums在预先未知的某个小标K上进行了旋转,使数组变为[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]],小标从0开始计数。例如[0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。

给定旋转后的数组nums和一个整数target,如果nums中存在这个目标值target,则返回它的小标,否则返回-1


方法一:二分查找

对于有序数组,可以使用二分查找的方法查找元素

这道题中,数组本身不是有序的,进行旋转后只保证了数组的局部是有序的

可以发现,将数组从中间分开成左右两部分,一定有一部分的数组是有序的,拿示例看,从 6 这个位置分开以后数组变成了 [4, 5, 6] 和 [7, 0, 1, 2] 两个部分,其中左边 [4, 5, 6] 这个部分的数组是有序的,其他也是如此。

这启示我们,可以在常规二分查找的时候查看当前mid为分割位置分割出来的两个部分[l, mid] 和 [mid + 1, r]哪个部分是有序的并根据有序的那个部分确定该如何改变二分查找的上下界,因为可以根据有序的部分判断出target在不在这个部分。

如果 [l, mid - 1] 是有序数组,且 target 的大小满足 [nums[l],nums[mid]),应该将搜索范围缩小至 [l, mid - 1],否则在 [mid + 1, r] 中寻找

如果 [mid, r] 是有序数组,且 target 的大小满足 (nums[mid+1],nums[r]],则我们应该将搜索范围缩小至 [mid + 1, r],否则在 [l, mid - 1] 中寻找。

class Solution(object):def search(self, nums, target):""":type nums: List[int]:type target: int:rtype: int"""if not nums:  #如果输入数组为空,直接返回-1表示未找到return -1l,r=0,len(nums)-1  #初始化两个指针l(left)和r(right),分别指向数组的开始和结束位置while l<=r: #开始二分查找循环,当左指针不超过右指针时继续循环mid=(l+r)//2  #计算中间位置midif nums[mid]==target: #如果中间值正好等于目标值,直接返回中间索引return midif nums[0]<=nums[mid]:#检查数组的左半部分是否有序(旋转点在mid右侧)if nums[0]<=target<nums[mid]: #如果目标值在有序的左半部分范围内,将右指针移到mid左侧r=mid-1else:l=mid+1  #否则目标值在右半部分,将左指针移到mid右侧else: #如果左半部分无序(旋转点在mid左侧),则右半部分必定有序if nums[mid]<target<=nums[len(nums)-1]:#如果目标值在有序的右半部分范围内,将左指针移到mid右侧l=mid+1else:    #否则目标值在左半部分,将右指针移到mid左侧r=mid-1return -1

时间复杂度:O(logn),其中 n 为 nums 数组的大小。整个算法时间复杂度即为二分查找的时间复杂度 O(logn)

空间复杂度: O(1)

源自力扣官方题解
 

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

相关文章:

  • 商城网站建设方案 2017如何用手机创建网站
  • wordpress很慢北京seo专员
  • 网站开发与设计公司深圳做网站的
  • 电影网站怎么做要多少钱网站加速器
  • 网站建设的知名公司百度手机管家
  • 深圳网站建设专家百度seo快速排名
  • 大数据适合什么人学绍兴seo网站管理
  • 成都大型网站设计公司全球网站流量排名100
  • wordpress添加直达链接长沙seo顾问
  • 商机网网站源码线上拓客渠道有哪些
  • 自己做网站做那种类型微博热搜榜排名今日
  • 信息型网站有哪些云南新闻最新消息今天
  • 唐山网站建设报价天津网站推广
  • 成品网站源码是1688吗百度保障中心人工电话
  • 有了域名 网站建设云南网站seo服务
  • 简单建网站seo是什么意思电商
  • php主做哪种类型网站关键词排名推广怎么做
  • 网站建设销售技巧网站seo重庆
  • 网站建设菜鸟教程百度一下主页官网
  • 青岛城乡建设委员会网站官网百度资源
  • 先备案 做网站网站推广服务
  • 美食网站首页设计室内设计网站
  • 做风险代理案源的网站制作网站要花多少钱
  • 昆明网站建设首选才力太原seo顾问
  • 怎么用云主机做网站百度大数据分析平台
  • asp网站安全怎么做百度2020新版下载
  • 公司网站是做的谷歌的企业百度推广怎么收费
  • 个人作品展示网站模板泉州网站建设
  • 揭阳做网站建设公司搜索热度和搜索人气
  • 关于文案的网站新闻稿发布