leetcode 【 Search in Rotated Sorted Array 】python 实现
题目:
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
代码:oj测试通过 Runtime: 53 ms
class Solution:
# @param A, a list of integers
# @param target, an integer to be searched
# @return an integer
def search(self, A, target):
# none case & zero case
if A is None or len(A)==0 :
return -1
# binary search
start = 0
end = len(A)-1
while start<=end :
# one element left case
if start == end :
if A[start]==target :
return start
else:
return -1
# two elements left case
if start+1 == end :
if A[start]==target :
return start
elif A[end]==target :
return end
else:
return -1
# equal or more than three elements case
mid = (start+end)/2
if A[mid]==target :
return mid
elif A[mid]>target:
if A[start]>A[mid] and A[end]<A[mid]:
start = mid+1
elif A[start]<A[mid] and A[end]<A[mid]:
if A[end]>=target:
start = mid+1
else:
end = mid-1
elif A[start]>A[mid] and A[end]>A[mid]:
end = mid-1
else:
end = mid-1
else:
if A[start]>A[mid] and A[end]<A[mid]:
end = mid-1
elif A[start]<A[mid] and A[end]<A[mid]:
start = mid+1
elif A[start]>A[mid] and A[end]>A[mid]:
if A[end]>=target :
start = mid+1
else:
end = mid-1
else:
start = mid+1
return -1
思路:
这个就是binary search的思路。
个人没想出来什么好的方法,硬着头皮硬写了一个暴力解决方法。
传统的binary search只需要判断A[mid]与target的大小就可以了;但这道题是rotated array,光判断A[mid]是不够的。
还需要判断A[start] A[end]与A[mid]的大小才能判断,target可能落在[start,mid]区间还是[mid,end]区间。
自己的代码实在有些繁琐丑陋,估计有些if else条件可以合并,后续会改进。
leetcode 【 Search in Rotated Sorted Array 】python 实现的更多相关文章
- leetcode Search in Rotated Sorted Array python
#Suppose a sorted array is rotated at some pivot unknown to you beforehand. #(i.e., 0 1 2 4 5 6 7 ...
- LeetCode:Search in Rotated Sorted Array I II
LeetCode:Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to y ...
- LeetCode: Search in Rotated Sorted Array II 解题报告
Search in Rotated Sorted Array II Follow up for "LeetCode: Search in Rotated Sorted Array 解题报告& ...
- [leetcode]Search in Rotated Sorted Array II @ Python
原题地址:https://oj.leetcode.com/problems/search-in-rotated-sorted-array-ii/ 题意: Follow up for "Sea ...
- [LeetCode] Search in Rotated Sorted Array II 在旋转有序数组中搜索之二
Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...
- [LeetCode] Search in Rotated Sorted Array 在旋转有序数组中搜索
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- LeetCode——Search in Rotated Sorted Array II
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- LeetCode: Search in Rotated Sorted Array 解题报告
Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you before ...
- LeetCode Search in Rotated Sorted Array 在旋转了的数组中查找
Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you before ...
- [LeetCode] Search in Rotated Sorted Array I (33) && II (81) 解题思路
33. Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you be ...
随机推荐
- Zabbix邮件报警设置方法
实现目的: 在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报警邮件到指定邮箱. 具体操作: 以下操作在Zabbix监控服务端进行 备注:Zabbix监控服务端 操 ...
- nrm—源管理工具
全局安装 npm install -g nrm 查看可选源 nrm ls 其中,带*的是当前使用的源,上面的输出表明当前源是hiknpm 切换源 nrm use taobao 新增源 nrm add ...
- autoreleasing on a thread
So basically, if you are running on OS X 10.9+ or iOS 7+, autoreleasing on a thread without a pool s ...
- 【BZOJ1029】[JSOI2007] 建筑抢修(堆优化贪心)
点此看题面 大致题意: 有N个受到严重损伤的建筑,对于每个建筑,修好它需要\(T1\)秒,且必须在\(T2\)秒之前修完(\(T1\)与\(T2\)不是固定值),问你最多能修好几个建筑. 题解 一看到 ...
- mac 扫描存活IP段
法一:脚本内容 MacdeMacBook-Pro:~ root# cat ping-ttl.sh #!/bin/bash [ $UID -ne 0 ]&&{ echo "Pl ...
- python_图形界面编程示例
"常用Tkinter组件的使用" #一.弹出消息框 #1 弹出提示消息框 from tkinter.messagebox import * showinfo(title='提示', ...
- Python判断一个数是否为小数
一.判断一个数是否为小数 1.有且仅有一个小数点 2.小数点的左边可能为正数或负数 3.小数点的右边为正数 二.实现代码 def is_float(str): if str.count('.') == ...
- CXF学习记录
1 apache CXF入门 1.1 下载 官网:cxf.apache.org 下载CXF的开发包: Apache CXF = Celtix + Xfire 支持多种协议: SOAP1.1,1.2 X ...
- WPF中对XML的读写
XML(可扩展标记语言) 定义:用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 写操作: XmlTextWriter wri ...
- angular实现全屏显示效果