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.

分析:

给出一个旋转的有序数组,所谓的旋转就是在原有的有序数组某个位置把数组分为两部分,把后半部分平移到前面来。

比如: 0  1  2   4  5  6   7  ,

从2和4之间分开,前半部分是0   1   2 ,后半部分是 4   5  6   7  ,把后面的前移变成了 4  5  6  7  0   1  2  。

寻找target的时候,分为两种情况。

(1)mid在第一个上升区间,也就是4  5  6  7 。

如果在这个区间,那么nums[start]是小于nums[mid]的。寻找target分了两种情况,

第一种,target在start和mid之间,也就是在第一个上升区间的前半部分,这样将end结点前移。

第二种,target不在start和mid之间,start后移。

(2)mid在第二个上升区间,也就是 0  1  2

如果在这个区间呢,那么nums[mid]是小于nums[end]的。寻找target分了两种情况,

第一种,target在mid和end之间,也就是在第二个上升区间的后半部分,这样将start结点后移。

第二种,target不在mid和end之间,end前移。

public class Solution {
public int search(int[] nums, int target) {
if (nums.length == 0){
return -1;
} int start = 0, end = nums.length - 1; while (start + 1 < end){
int mid = start + (end - start)/2;
if(nums[mid] == target){
return mid;
}
if (nums[start] < nums[mid]){
if (target >= nums[start] && target <= nums[mid]){
end = mid;
}else{
start = mid;
}
}else{
if (target >= nums[mid] && target <= nums[end]){
start = mid;
}else{
end = mid;
}
}
}
if (nums[start] == target){
return start;
}
if (nums[end] == target){
return end;
}
return -1;
}
}

附图,有点丑,不知道会不会掉粉~

leetcode 33. Search in Rotated Sorted Array的更多相关文章

  1. [array] leetcode - 33. Search in Rotated Sorted Array - Medium

    leetcode - 33. Search in Rotated Sorted Array - Medium descrition Suppose an array sorted in ascendi ...

  2. LeetCode 33 Search in Rotated Sorted Array [binary search] <c++>

    LeetCode 33 Search in Rotated Sorted Array [binary search] <c++> 给出排序好的一维无重复元素的数组,随机取一个位置断开,把前 ...

  3. [LeetCode] 33. Search in Rotated Sorted Array 在旋转有序数组中搜索

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

  4. LeetCode 33. Search in Rotated Sorted Array(在旋转有序序列中搜索)

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

  5. leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法

    Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you before ...

  6. LeetCode 33.Search in Rotated Sorted Array(M)

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

  7. Java [leetcode 33]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 ...

  8. [leetcode]33. Search in Rotated Sorted Array旋转过有序数组里找目标值

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

  9. LeetCode 33 Search in Rotated Sorted Array(循环有序数组中进行查找操作)

    题目链接 :https://leetcode.com/problems/search-in-rotated-sorted-array/?tab=Description   Problem :当前的数组 ...

随机推荐

  1. glade2支持C++代码的输出(3)

    今天完成了glade-2生成configure.ac/Makefile.am等调整 代码为:cpp_out_4.patch.zip BaseObject类也做了一些小的调整:BaseObject.00 ...

  2. Spring浅探

    热度最大的框架,它也称为业务层框架.Spring这个框架的诞生,给程序员揭示了两个主要的思想:Ioc,Aop: 最近的网页架构可以分为这样. 传统结构中,每个层都得new出依赖层的类进行一些本层操作, ...

  3. 自然语言21_Wordnet

    QQ:231469242 欢迎喜欢nltk朋友交流   http://baike.baidu.com/link?url=YFVbJFMkZO9A5CAvtCoKbI609HxXXSFd8flFG_Lg ...

  4. ubuntu亮度调节失效

    ctrl+alt+T 打开终端 输入下面的指令 sudo touch /usr/share/X11/xorg.conf.d/20-intel.conf 2 再输入下面的指令: sudo gedit / ...

  5. HTML 个人资料框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. FingerGestures for Unity3D

    FingerGestures http://fingergestures.fatalfrog.com

  7. Redis 安装,主从配置及Sentinel配置自动Failover

    1.安装redis 首页地址:http://redis.io/ 下载地址:http://download.redis.io/ 下载最新的源码包 tar -zxvf redis-stable.tar.g ...

  8. Python之路【第五篇续】:面向对象编程二

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABgQAAALaCAIAAABxja8cAAAgAElEQVR4nOzd6X9Tdd74/+uv+f5uzF

  9. cookie和session的对比

    1.存放的位置     cookie存在客户端的临时文件夹     session:存在服务器的内存中,一个session域对象为一个用户浏览器服务. 2.安全性   cookie是以明文方式存放在客 ...

  10. Spring入门_04_注解注入

    applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xm ...