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

免费网站推广群发软件网站建设文字

免费网站推广群发软件,网站建设文字,小程序源码资源,商城app开发方案整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nums[1], …, …

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

在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [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 。

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

示例 1:

输入:nums = [4,5,6,7,0,1,2], target = 0
输出:4
示例 2:

输入:nums = [4,5,6,7,0,1,2], target = 3
输出:-1
示例 3:

输入:nums = [1], target = 0
输出:-1

提示:

1 <= nums.length <= 5000
- 1 0 4 10^4 104 <= nums[i] <= 1 0 4 10^4 104
nums 中的每个值都 独一无二
题目数据保证 nums 在预先未知的某个下标上进行了旋转
- 1 0 4 10^4 104 <= target <= 1 0 4 10^4 104

题目看完,感觉跟二分查找沾边,但是数组从中间某个位置调换了。

按照二分查找的思路,应该对比target跟nums[mid]的大小,但对比之后发现下一步如何移动跟mid所处位置有关,直接看代码:

class Solution:def search(self, nums: list, target: int) -> int:return self.search_helper(nums, target, 0, len(nums) - 1)def search_helper(self, nums: list, target: int, left: int, right: int):if left > right:return -1mid = (left + right) // 2if nums[mid] == target:return midif nums[left] == target:return leftif nums[right] == target:return right#此时mid两侧必定是一边有序一边无序,测试左边如果有序那右边无序,否则右边有序if nums[left] < nums[mid]:if target < nums[mid] and target > nums[left]:return self.search_helper(nums, target, left + 1, mid - 1)else:return self.search_helper(nums, target, mid + 1, right - 1)else:if target > nums[mid] and target < nums[right]:return self.search_helper(nums, target, mid + 1, right - 1)else:return self.search_helper(nums, target, left + 1, mid - 1)

代码中的注释是关键,如果nums[mid]不等于target,那么mid两边一定有一边是有序而另一边一定无序,是否有序只要测试nums[left]与nums[mid](nums[mid]与nums[right]也行)就可以知道是否有序,当确定有序的一边后,就可以使用二分查找的条件了。17,18行(22,23行)表示需要先有序再二分

http://www.yayakq.cn/news/453237/

相关文章:

  • 网站建设技术课程设计北京市建设工程信息网中标公告
  • 网站的建设需要考虑什么问题北京有多少互联网公司
  • 建筑公司网站大全建设一个网站需要几个角色
  • 做网站需要去哪里备案谷歌网站开发用什么框架
  • 网站有收录就会排名吗网页网站开发项目设计
  • 完整网站建设案例教程企业网站设计策划
  • 网站建设需求文档提供搜索引擎优化公司
  • 石家庄网站建设外包公司哪家好下瓦房做网站公司
  • 做网站九州科技广州做外贸网站
  • 山西网站建设开发团队阿里云备案网站名称
  • 企业网站一般用什么域名花生壳域名可以做网站域名吗
  • 公司网站建设视频教程企业网络营销网站设计
  • 网站站点风格医院关于建设官方网站的请示
  • 怀柔网站制作深圳市市长
  • 网站建设销售实训报告网站快速备案被退回的几种原因分析
  • 网站建设单一来源谈判文件我自己做的网站上有图片宣传食品
  • 用html做网站顺序wordpress去掉搜索框
  • 广东网站建设哪家有如果在工商局网站上做股权质押
  • 如何提升网站的流量网站推广app下载
  • 深圳微信网站设计百度百度一下官网
  • 云服务器 网站wordpress 400
  • 打开网站很慢网站套模板教程
  • 做园林景观的网站深圳网站建设服务哪一个便宜
  • wordpress网站响应时间网站推广的目的
  • 建设部人才中心网站产品设计专业世界大学排名
  • 内江做网站哪里便宜wordpress主机怎么填
  • 深圳哪家做网站比较好珠海企业建站模板
  • 开网店需要投资多少钱免费seo网站
  • 百度网站收录更新中国国际新闻
  • wap php网站源码小程序源码免费下载