整数数组 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 。

示例 1:

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

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

输入:nums = [1], target = 0
输出:-1

解题思路

https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/solution/yi-wen-dai-ni-gao-ding-er-fen-cha-zhao-j-00kj/

class Solution {public int search(int[] nums, int target) {//左右指针int left = 0;int right = nums.length - 1;while (left <= right) {int mid = left+((right-left)>>1);if (nums[mid] == target) {return mid;}//落在同一数组的情况,同时落在数组1 或 数组2if (nums[mid] >= nums[left]) {//target 落在 left 和 mid 之间,则移动我们的right,完全有序的一个区间内查找if (nums[mid] > target && target >= nums[left]) {right = mid - 1;// target 落在right和 mid 之间,有可能在数组1, 也有可能在数组2} else if (target > nums[mid] || target < nums[left]) {left = mid + 1;} //不落在同一数组的情况,left 在数组1, mid 落在 数组2}else if (nums[mid] < nums[left]) {//有序的一段区间,target 在 mid 和 right 之间if (nums[mid] < target && target <= nums[right]) {left = mid + 1;// 两种情况,target 在left 和 mid 之间} else if (target < nums[mid] || target > nums[right]) {right = mid - 1;}} }//没有查找到return -1;}
}

leetCode:33. 搜索旋转排序数组相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. C#选择目录对话框FolderBrowserDialog
  2. rocketMq指定broker ip地址,适合解决云主机部署问题
  3. JavaScript学习总结二:js闭包(Closure)概念
  4. 1.2 数学符号-深度学习第五课《序列模型》-Stanford吴恩达教授
  5. mybatis 做 insert操作的时候返回插入的那条数据的id
  6. excel2003 java_java 读取 excel 2003 或 excel 2007
  7. JUnit通过失败测试案例
  8. 创建自已的sql函数
  9. Linux 关闭网络管理服务
  10. L3-2 还原文件 (30 分)
  11. c++win32项目 如何显示后再删除一个绘图_sai绘图软件中文版
  12. golang笔记14--go 语言爬虫实战项目介绍
  13. 服务器主机本地系统服务受限,Win10系统出现服务主机本地系统网络受限怎么办 如何解决...
  14. TJUPT 无法与服务器建立连接问题的解决方法
  15. 阿里云服务器绑定域名,阿里云esc绑定域名,阿里云域名备案相关完整情况
  16. python一张纸折叠到珠峰高度_python实现seo疯狂外链发送工具
  17. 部门刚刚来了个测试开发,听说是00后,上来一顿操作给我看呆了...
  18. 2021-12-21 数据库系统原理复习提纲(一)
  19. Pots (模拟倒水)
  20. 电脑端微信多开批处理命令

热门文章

  1. 厂商SSD对数据库性能影响 测试报告
  2. 嵌入式uboot移植之从uboot官方移植
  3. delphi 人脸比对_OpenCV学习笔记3:找出人脸,同时比较两张图片中的人脸相似度 | 学步园...
  4. 在python中布尔表达式的应用——判断语句
  5. 清迈中文离线地图App上线
  6. php合并ts文件吗,快速合并ts文件的过程
  7. 夺命雷公狗—玩转SEO---65---黑阔手法秒杀dede提升权重
  8. pc-com串口(DB9)管脚定义和单片机uart串口
  9. 如何修改图片像素尺寸大小?如何改图片大小尺寸?
  10. 知识备忘phpcms 简单解析一 数据表字段