假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。

你可以假设数组中不存在重复的元素。

你的算法时间复杂度必须是 O(log n) 级别。

示例 1:

输入: nums = [4,5,6,7,0,1,2], target = 0
输出: 4
示例 2:

输入: nums = [4,5,6,7,0,1,2], target = 3
输出: -1

思路:复杂度log(n),首先想到的就是二分法,如果中间的数小于最右边的数,则右半段是有序的,若中间数大于最右边数,则左半段是有序的,我们只要在有序的半段里用首尾两个数组来判断目标值是否在这一区域内,再决定保留哪半边

class Solution {
public:int search(vector<int>& nums, int target) {int n = nums.size();int left = 0;int right = n-1;while(left<=right){int mid = (left+right)/2;int midval = nums[mid];if(midval==target){return mid;}else if(midval>nums[right]){if(target<midval && target>=nums[left])right = mid-1;elseleft = mid+1;}else{if(target>midval && target<=nums[right])left = mid+1;elseright = mid-1;}}return -1;}
};

搜索旋转排序数组—leetcode31相关推荐

  1. 《LeetCode力扣练习》第33题 搜索旋转排序数组 Java

    <LeetCode力扣练习>第33题 搜索旋转排序数组 Java 一.资源 题目: 整数数组 nums 按升序排列,数组中的值 互不相同 . 在传递给函数之前,nums 在预先未知的某个下 ...

  2. python 搜索旋转排序数组

    | 搜索旋转排序数组 整数数组 nums 按升序排列,数组中的值 互不相同 .在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ...

  3. LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置

    前言 国庆前最后一次打卡,国庆后继续开启,公众号bigsai回复进群欢迎加入打卡,如有帮助记得点赞收藏. 近期打卡记录: LeetCode 32最长有效括号(困难) (本周) LeetCode 30串 ...

  4. 81. 搜索旋转排序数组 II

    81. 搜索旋转排序数组 II Ideas 这题,,,,对Python来说一点技术含量没有. 哈哈哈哈,开个玩笑,完美的避开了考点. Code Python class Solution:def se ...

  5. LeetCode—33. 搜索旋转排序数组

    33. 搜索旋转排序数组 题目描述:整数数组 nums 按升序排列,数组中的值 互不相同 . 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length ...

  6. LeetCode 33. 搜索旋转排序数组 golang

    33. 搜索旋转排序数组 三个测试用例, 这个题的难度是二分法的左侧条件很难写出来. 4 5 6 0 1 2 3 1 2 3 4 5 6 0 5 1 2 3 4 ( 例如,数组 [0,1,2,4,5, ...

  7. LeetCode(81): 搜索旋转排序数组 II

    Medium! 题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] ). 编写一个函数来判断给 ...

  8. [Leedcode][JAVA][第33题][搜索旋转排序数组]

    [问题描述][33. 搜索旋转排序数组] [中等] 假设按照升序排序的数组在预先未知的某个点上进行了旋转.( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). ...

  9. 数组的合并和升序排列_leetcode 33 搜索旋转排序数组

    给你一个升序排列的整数数组 nums ,和一个整数 target . 假设按照升序排序的数组在预先未知的某个点上进行了旋转.(例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0 ...

最新文章

  1. Android startActivityForResult
  2. boost::hana::experimental::print用法的测试程序
  3. 使用PowerDbg自动化Windbg调试过程
  4. 【剑指offer】_15数组中重复的数字
  5. 使用Zuul构建API Gateway
  6. Docker Consul Fabio ASP.NET Core 2.0 微服务跨平台实践
  7. JavaScript Array(数组)对象
  8. URL重定向,rewrite命令
  9. 分析一个简单的特洛伊木马(虾神写的)
  10. 层次分析法(AHP)介绍
  11. spring调用webservice
  12. python查询文章中的高频词汇
  13. Web前端105天-day13-BOOT
  14. 在谷歌上安装倍速播放的插件video-speed-controller
  15. python实现实现快速输入无法粘贴的内容
  16. 微博登录显示服务器解析失败怎么办,微博air登录失败, air无法登录的原因 -电脑资料...
  17. 那些曾让你哭过的事,总有一天会笑着说出来
  18. 数据库MySQL的使用,带GUI界面
  19. uni-app 使用u-echarts图表插件步骤(圆环)
  20. RHCSA-Day2 --- 命令、目录结构、vi编辑器

热门文章

  1. mysql数据库复制基本原理_MySQL的复制原理以及流程
  2. 40.QT-QPropertyAnimationdong和QParallelAnimationGroup动画实现
  3. 第一章 初识Linux shell
  4. 强制浏览器使用兼容模式,Web.config,httpProtocol
  5. 在没有Sql Server 2000中加入 记录编号
  6. RxSwift之深入解析map操作符的底层实现
  7. App设计灵感之十二组精美的酒店预定App设计案例
  8. 2013\Province_Java_C\2.组素数
  9. 491. Increasing Subsequences 递增子序列
  10. 1014. Best Sightseeing Pair