【LEETCODE】33-Search in Rotated Sorted Array [Python]
2016-01-22 11:26
573 查看
Suppose a sorted array 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.
题意:
假设一个排好的数组,在某一个节点处逆转了
(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
给定一个目标值,如果数组里有此值,则返回它的下标,如果没有,则返回-1
可以假设数组里没有重复
思路:
二分法,先判断中值是属于哪边的升序序列,再根据端点值继续判断 target 该落在左边还是右边区域
Python:
(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.
题意:
假设一个排好的数组,在某一个节点处逆转了
(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
给定一个目标值,如果数组里有此值,则返回它的下标,如果没有,则返回-1
可以假设数组里没有重复
思路:
二分法,先判断中值是属于哪边的升序序列,再根据端点值继续判断 target 该落在左边还是右边区域
Python:
class Solution(object): def search(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int """ start=0 end=len(nums)-1 while start<=end: mid=(start+end)/2 if nums[mid]==target: return mid if nums[mid]>=nums[start]: #当nums[mid]属于左边升序序列时 if target>=nums[start] and target<nums[mid]: end=mid-1 else: start=mid+1 if nums[mid]<nums[end]: #当nums[mid]属于右边升序序列时 if target>nums[mid] and target<=nums[end]: start=mid+1 else: end=mid-1 return -1
相关文章推荐
- python 获取当前日期 星期
- 用Python和OpenCV创建一个图片搜索引擎的完整指南 The complete guide to building an image search engine with Python and
- 用Python和OpenCV创建一个图片搜索引擎的完整指南
- 安装python包
- python 学习笔记3
- notepad++自动运行Python
- Python中range与xrange的区别
- python对象的继承和重写
- python 之SET和collections
- python 单元测试、文档测试
- python实现人人网用户数据爬取及简单分析
- GeoIP的详解 --Python版
- python 学习笔记4
- Python 字符串操作方法大全
- Python 列表排序方法reverse、sort、sorted详解
- Python相关常用库概念介绍
- python 编程 规范
- Python 列表排序方法reverse、sort、sorted操作方法
- Python练习_更改配置文件(3)
- On Mac platform,Using Eclipse + PyDev Plugins + Python to build a Python development environment