失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 60. Leetcode 面试题 10.03. 搜索旋转数组 (二分查找-局部有序)

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

时间:2024-02-16 09:00:08

相关推荐

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

搜索旋转数组。给定一个排序后的数组,包含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. 搜索旋转数组 (二分查找-局部有序)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。