假设按照升序排序的数组在预先未知的某个关键点上旋转。
(即 0 1 2 4 5 6 7 将变成 4 5 6 7 0 1 2)。
给你一个目标值来搜索,如果数组中存在这个数则返回它的索引,否则返回 -1。
你可以假设数组中不存在重复。
详见:https://leetcode.com/problems/search-in-rotated-sorted-array/description/

Java实现:

  1. class Solution {
  2. public int search(int[] nums, int target) {
  3. int size=nums.length;
  4. if(size==0||nums==null){
  5. return -1;
  6. }
  7. int left=0;
  8. int right=size-1;
  9. while(left<=right){
  10. int mid=(left+right)>>1;
  11. if(nums[mid]==target){
  12. return mid;
  13. }else if(nums[mid]<nums[right]){
  14. if(nums[mid]<target&&nums[right]>=target){
  15. left=mid+1;
  16. }else{
  17. right=mid-1;
  18. }
  19. }else{
  20. if(nums[left]<=target&&nums[mid]>target){
  21. right=mid-1;
  22. }else{
  23. left=mid+1;
  24. }
  25. }
  26. }
  27. return -1;
  28. }
  29. }

C++实现:

  1. class Solution {
  2. public:
  3. int search(vector<int>& nums, int target) {
  4. int size=nums.size();
  5. if(size==0||nums.empty())
  6. {
  7. return -1;
  8. }
  9. int left=0;
  10. int right=size-1;
  11. while(left<=right)
  12. {
  13. int mid=(left+right)/2;
  14. if(nums[mid]==target)
  15. {
  16. return mid;
  17. }
  18. else if(nums[mid]<nums[right])
  19. {
  20. if(nums[mid]<target&&nums[right]>=target)
  21. {
  22. left=mid+1;
  23. }
  24. else
  25. {
  26. right=mid-1;
  27. }
  28. }
  29. else
  30. {
  31. if(nums[left]<=target&&nums[mid]>target)
  32. {
  33. right=mid-1;
  34. }
  35. else
  36. {
  37. left=mid+1;
  38. }
  39. }
  40. }
  41. return -1;
  42. }
  43. };

033 Search in Rotated Sorted Array 搜索旋转排序数组的更多相关文章

  1. LeetCode(力扣)——Search in Rotated Sorted Array 搜索旋转排序数组 python实现

    题目描述: python实现 Search in Rotated Sorted Array 搜索旋转排序数组   中文:假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1 ...

  2. Leetcode33.Search in Rotated Sorted Array搜索旋转排序数组

    假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在这个目标值, ...

  3. LeetCode(力扣)——Search in Rotated Sorted Array2 搜索旋转排序数组 python实现

    题目描述: python实现 Search in Rotated Sorted Array2 搜索旋转排序数组   中文: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0 ...

  4. [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 7might ...

  5. 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  ...

  6. [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 ...

  7. [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. ...

  8. lintcode:Recover Rotated Sorted Array恢复旋转排序数组

    题目: 恢复旋转排序数组 给定一个旋转排序数组,在原地恢复其排序. 样例 [4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5] 挑战 使用O(1)的额外空间和O(n)时间复杂度 ...

  9. LeetCode OJ: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 ...

随机推荐

  1. tomcat启动加载web项目内存溢出

    通过tomcat命令启动tomcat的web项目时,根据项目大小,有可能会报以下两个错误. 在启动时没有错误,但是在访问时会报错: 1. java.lang.OutOfMemoryError: Jav ...

  2. Poj 1067 取石子游戏(NIM,威佐夫博奕)

    一.Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子. ...

  3. ansible一键部署LAMP

    一.实现ansible跟节点间无密码访问,不会配置的请看 文章 . 二.创建目录 $ mkdir -p playbooks/{files,templates}   三.创建php测试文件index.p ...

  4. super关键字主要有以下两种用途

    super关键字主要有以下两种用途. 1.调用父类的构造方法 子类可以调用由父类声明的构造方法.但是必须在子类的构造方法中使用super关键字来调用.其具体的语法格式如下: super([参数列表]) ...

  5. Jenkins配置有用摘抄笔记

    使用jenkins配置.net mvc5网站自动构建全过程记录  转自:http://www.cnblogs.com/baiyunchen/p/4724350.html 持续集成是个简单重复劳动,人来 ...

  6. web特点

    1.图形化和易于导航的 Web是非常易于导航的,只需要从一个连接跳到另一个连接,就可以在各页各站点之间进行浏览了. 2.与平台无关 这里所说的平台是指软件的运行环境,可以是Windows.Linux等 ...

  7. ps -ef | grep java 输出的具体含义是什么?

      uid        pid    ppid # PID 这个程序的 ID 下面的 PPID 则是父程序的 ID: PS是LINUX下最常用的也是非常强大的进程查看命令 常见的使用方法是检查一个进 ...

  8. <转>哥舒意:关于米奇的三个真相 (米奇·阿尔博姆)

    http://book.douban.com/review/6436827/   <时光守护者>的故事也不算复杂,虽然有三条线同时进行,但是三条线的情节都条理分明,而且这次他使用了类似于奇 ...

  9. bootstrap常用部件下载

    http://shapebootstrap.net/item/1524915-adminlte-dashboard-and-control-panel/live-demo

  10. javascript不用正则验证输入的字符串是否为空(包含空格)

    在项目中需要验证输入的字符串是否为空,包括空格,不太喜欢使用正则,所以就想到了js的indexOf函数,indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,如果要检索的字符串值没 ...