博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 33. Search in Rotated Sorted Array
阅读量:5143 次
发布时间:2019-06-13

本文共 1728 字,大约阅读时间需要 5 分钟。

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

 

先用二分法找到pivot。判断target应该是在前一段还是后一段。然后在相应的那一段做二分法搜索。注意L39, 如果l - r ==1 这说明r就是pivot了,不能一直搜到 l == r.

1 class Solution(object): 2     def search(self, nums, target): 3         """ 4         :type nums: List[int] 5         :type target: int 6         :rtype: int 7         """ 8         pivot = self.findP(nums) 9         if nums[pivot] <= target <= nums[-1]:10             ans = self.BS(nums[pivot:], target)11             if ans != -1:12                 return ans + pivot13             else:14                 return -115         elif nums[0] <= target <= nums[pivot-1]:16             return self.BS(nums[:pivot], target)17         else:18             return -119     20     21     def BS(self, nums, target):22         n = len(nums)23         l, r = 0, n-124         while l <= r:25             mid = (l + r)//226             if nums[mid] == target:27                 return mid28             elif nums[mid] < target:29                 l = mid + 130             else:31                 r = mid - 132         return -133         34     def findP(self, nums):35         n = len(nums)36         if nums[0] <= nums[n-1]:37             return 038         l, r = 0, n -139         while l < r and r - l > 1:40             mid = (l+r)//241             if nums[l] > nums[mid]:42                 r = mid 43             elif nums[mid] > nums[r]:44                 l = mid 45         return r 46

 

转载于:https://www.cnblogs.com/lettuan/p/6264906.html

你可能感兴趣的文章
表哥的Access入门++以Excel视角快速学习数据库知识pdf
查看>>
TC 配置插件
查看>>
关于异步reset
查看>>
索引优先队列的工作原理与简易实现
查看>>
并发编程简介
查看>>
基于K-近邻分类算法的手写识别系统
查看>>
使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
查看>>
PC站跳转M站的方法
查看>>
wow 各职业体验(pvp)
查看>>
Streaming的receiver模式
查看>>
[转载]一个人的失败,99%失败于“脾气”
查看>>
【Nowcoder】玩游戏
查看>>
过滤器(Filter)
查看>>
字符串的操作
查看>>
性能优化之Java(Android)代码优化
查看>>
springMVC相关—文件上传
查看>>
由Oracle 11g SYSAUX 和 SYSTEM 表空间回收引发的联想
查看>>
uva 1416 Warfare And Logistics
查看>>
欲则不达
查看>>
盒子游戏
查看>>