搜索旋转数组。给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详。请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素,返回索引值最小的一个。示例1:输入: arr = [15, 16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14], target = 5输出: 8(元素5在该数组中的索引)
示例2:输入:arr = [15, 16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14], target = 11输出:-1 (没有找到)class Solution:def search(self, arr: List[int], target: int) -> int:l, r = 0, len(arr) - 1while l <= r:mid = l + (r-l)//2if arr[l] < arr[mid]:if arr[l] <= target <= arr[mid]:r = mid - 1else:l = mid + 1elif arr[l] > arr[mid]:if arr[l] <= target or target <= arr[mid]:r = mid - 1else:l = mid + 1elif arr[l] == arr[mid]:if arr[l] != target:l += 1else:r = l - 1if l < len(arr) and arr[l] == target:return lelse:return -1

60. Leetcode 面试题 10.03. 搜索旋转数组 (二分查找-局部有序)相关推荐

  1. leetcode面试题 10.03. 搜索旋转数组(二分法)

    搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详.请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小的一个. 示例 ...

  2. 程序员面试金典 - 面试题 10.03. 搜索旋转数组(二分查找)

    1. 题目 搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详. 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小 ...

  3. 程序员面试金典 - 面试题 10.03. 搜索旋转数组

    题目难度: 中等 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 搜索旋转数组.给定一个排序后的数组 ...

  4. leetcode面试题 08.03. 魔术索引(二分)

    魔术索引. 在数组A[0-n-1]中,有所谓的魔术索引,满足条件A[i] = i.给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1.若有多个魔 ...

  5. leetcode面试题 16.21. 交换和(二分查找)

    给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等. 返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素.若有多个答案,返回任 ...

  6. Leetcode面试题 10.01. 合并排序的数组(C语言)

    Leetcode面试题 10.01. 合并排序的数组(C语言) 题目: 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序.初始化 ...

  7. 【LeetCode】剑指 Offer 11. 旋转数组的最小数字

    [LeetCode]剑指 Offer 11. 旋转数组的最小数字 文章目录 [LeetCode]剑指 Offer 11. 旋转数组的最小数字 一.遍历 二.二分法 总结 一.遍历 算法步骤: 遍历数组 ...

  8. LeetCode 729. 我的日程安排表 I(set 二分查找)

    文章目录 1. 题目 2. 解题 2.1 set 二分查找 2.2 差分思想 1. 题目 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的时间内没有其他安排,则可以存储这个新的日程安 ...

  9. leetcode面试题 10.05. 稀疏数组搜索(二分法)

    稀疏数组搜索.有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置. 示例1: 输入: words = ["at", "", &q ...

最新文章

  1. opencv-mediapipe手部关键点识别
  2. LuoguP2617 Dynamic Rankings (动态主席树学习理解)
  3. 传闻,Google曾用股票来换取他的数学研究
  4. 遇到这四种面试官,接了 Offer 你可能会后悔
  5. golang for android
  6. 基于ESP32智能车竞赛裁判系统第二版硬件调试-6-26
  7. Java 常用构建对象的三种方式
  8. 关于核定区域电网2018—2019年输电价格的通知
  9. Why SAP SQL view is not recommended to use in SQL ?
  10. SaeStorage使用示例
  11. 前端学习(1399):多人管理19项目拦截器
  12. 【三维深度学习】Sparse Convolutional Network 基于稀疏采样不变性的深度稠密重建
  13. DWR中引用JS的路径问题
  14. 基于layuiCMS2.0开发后台管理系统,实现自定义分页并动态加载数据表格的示例...
  15. assoc fetch mysql 用法_mysql_fetch_assoc、mysql_fetch_object、mysql_fetch_row、mysql_fetch_array用法学习...
  16. 物联网工程导论笔记一:RFID及二维码技术
  17. MMORPG大型游戏设计与开发(构架)
  18. python大写金额算法
  19. Linux14.04安装Mysql Linux公社
  20. 微信小程序——推箱子小游戏

热门文章

  1. htpdate代替ntpdate同步时间
  2. C++ 指针 vs 数组
  3. 算法与数据结构之二分查找
  4. hadoop环境搭建之伪分布集群环境搭建(单节点)
  5. find: paths must precede expression(转)
  6. PHP mysql_real_escape_string() 函数
  7. 如何判断设备是上电复位还是软复位(主动调用复位接口或者看门狗复位,W600)
  8. 在wsl中运行开源项目tinyhttpd遇到的问题
  9. python Clipping input data to the valid range for imshow with RGB data解决方法
  10. linux netlink 编程示例(二)应用层