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

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

 

 

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;    }}

 

 

 

 

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

转载于:https://www.cnblogs.com/iwangzheng/p/5744686.html

你可能感兴趣的文章
unable to write 'random state'错误解决
查看>>
win7 wamp 下安装pear phpunit
查看>>
context:annotation-config vs component-scan
查看>>
HTTP协议理解与应用总结
查看>>
使用Supervisor守护Python进程
查看>>
结构体和类的内存对齐原则-这一次弄清楚了对齐的本质规则
查看>>
Centos编译安装Nginx和PHP
查看>>
XDOC云服务-简单参数报表
查看>>
服务器代理(proxy)
查看>>
Java或Web中解决所有路径问题
查看>>
IntelliJ IDEA 创建 maven web项目慢解决办法
查看>>
日志分析查看——grep,sed,sort,awk运用
查看>>
nginx rtmp handshake过程
查看>>
ipv4
查看>>
路由能否做到ARP欺骗防御,抑制广播风暴,内网病毒防御?
查看>>
CVE-2017-1000367:Sudo本地提权漏洞
查看>>
史上最全最正确的zabbix监控tomcat的方法
查看>>
Yahoo Front-end Engineer 电面+Onsite面经
查看>>
你真的了解功能键F7吗?
查看>>
UILable字体样式修改
查看>>