33. 搜索旋转排序数组

题目描述:整数数组 nums 按升序排列,数组中的值 互不相同 。

在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。

给你旋转后的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1 。

考察重点:二分查找

方法概括:先遍历找到旋转位置,前数组为原数组后半部分,后数组为原数组前半部分,根据target大小选择在哪个数组进行二分查找。

public int search(int[] nums, int target) {int left = 0, right = nums.length - 1;for (; left + 1 <= right && nums[left] < nums[left + 1]; left++) {}    //遍历找到旋转的起始位置//对于[4,5,6,7,0,1,2]   left目前指向7,right目前指向2if (left == right) {            // left right更新为记录待查找数组的左右边界left = 0;} else if (nums[right] >= target) {left++;} else {      right = left;left = 0;}while (left <= right) {int mid = left + (right - right) / 2;if (nums[mid] == target) {return mid;}if (target < nums[mid]) {right = mid - 1;}if (target > nums[mid]) {left = mid + 1;}}return -1;
}

LeetCode—33. 搜索旋转排序数组相关推荐

  1. 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, ...

  2. leetcode —— 33. 搜索旋转排序数组

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

  3. leetcode 33 搜索旋转排序数组 到处是细节的好题

    这个题想了想就会做,只是细节真的能卡死人,找了好久的bug.甚至我怀疑我现在的代码可能还有错,只是没例子测出来. 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2, ...

  4. LeetCode 33. 搜索旋转排序数组(二分查找)

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

  5. Leetcode 33.搜索旋转排序数组 (每日一题 20210707)

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

  6. Dichotomy专栏:Leetcode:#33 搜索旋转排序数组

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

  7. leetCode:33. 搜索旋转排序数组

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

  8. LeetCode 33 搜索旋转排序数组

    https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ 解决方案 class Solution {public int sea ...

  9. LeetCode 33. 搜索旋转排序数组

最新文章

  1. NodeJS + PhantomJS 前端自动化资源监控
  2. C# 控件置于最顶层、最底层
  3. Flask-Migrate
  4. 431.chapter10. working with flat files
  5. python的out模式_如何用python中的DataFrame列的模式替换NA值?
  6. 基于jsp+mysql+mybatis+Spring boot简单学生成绩信息管理系统
  7. 实验五 数独游戏界面设置
  8. 服务器指示灯详情 中兴,IBM服务器故障_指示灯介绍
  9. html5制作前端优势,HTML5前端开发原来有这么多优势!
  10. 完美手柄震动效果-xbox360手柄模拟器下载
  11. 华罗庚杯成绩查询2021高考成绩,第22届华杯赛入围决赛分数线已定,明天起可查询成绩...
  12. 梦三花重金修改服务器,2021年3月31日维护公告:新门派花果山
  13. 软媒定时关机,电脑无法启动
  14. Python学习教程公开课:好玩的Python
  15. Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
  16. 数据分析——关于同比与环比,你真的了解吗?看看踩过的坑
  17. 实习每日总结_20161219
  18. 学习SEO有别的味道
  19. Core Dump技术介绍
  20. 低端Windows平板汇总

热门文章

  1. SpringBoot的配置文件加载顺序和使用方式
  2. SQL SERVER学习笔记(二)数据库管理
  3. SANS研究所:7大最危险的攻击技术介绍
  4. 《交互式程序设计 第2版》一3.6 关系比较
  5. 消失的字符串——c语言函数中的数据存储方式以及字符串实现
  6. 2月份.xyz域名总量10强:西数称王 注册量破百万
  7. GNS3中不同型号路由器支持的模块表
  8. 在eclipse中,怎么改变字体大小?
  9. WMS学习笔记:1.尝试加载WMS
  10. 实现 IE6 支持 position fixed 的 CSS 属性