Search in Rotated Sorted Array
来源:互联网 发布:js清空select选中的值 编辑:程序博客网 时间:2024/06/03 17:58
题目:
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.
解题思路:初始有序的数组被翻转后,其中的任何位置的元素都仍然属于一个有序的子序列,这个有序的子序列不是在左边有序,就是右边有序,当然也可能都有序。
因此讨论mid位于左右那一部分有序数组中,然后再讨论有序部分与无序部分的情况,便可以解决此题。此题难点就在很容易把有序分区搞错。
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
lo, hi = 0, len(nums)-1
while lo<=hi:
mid = (lo+hi)/2
if nums[mid]==target:
return mid
if nums[mid]>=nums[lo]: # lo~mid是有序的
if nums[lo]<=target and target<=nums[mid]: # target位于lo和mid之间
hi = mid-1
else: # target不位于lo和mid之间
lo = mid+1
elif nums[mid]<=nums[hi]: # mid和hi是有序的
if nums[mid]<=target and target<=nums[hi]: # target位于mid和hi之间
lo = mid+1
else: # target不位于mid和hi之间
hi = mid-1
return -1
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- 逆波兰表达式
- Numinput(自定义数字输入框)
- 看懂信息检索和网络数据挖掘领域论文的必备知识总结
- 源码项目与框架
- UVA_11021 Tribles(递推)
- Search in Rotated Sorted Array
- Linux系统sigaction函数的使用示例
- 2015多校联合第二场 5305 friends 深搜
- canvas
- 第3回老弟,这些工具你会使不?
- 欢迎使用CSDN-markdown编辑器
- 作为程序员最应该投资的是这十件事
- 插入排序实现报告(个人版)
- Android调用SQL Server2008存储过程单例模式