面试算法-79-搜索旋转排序数组

题目

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

你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。

示例 1:

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

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

相关推荐

  1. 面试算法-79-搜索旋转排序数组

    2024-03-23 15:44:04       16 阅读
  2. 搜索旋转排序数组

    2024-03-23 15:44:04       22 阅读
  3. 搜索旋转排序数组

    2024-03-23 15:44:04       10 阅读
  4. 33.搜索旋转排序数组

    2024-03-23 15:44:04       40 阅读
  5. 面试算法75数组相对排序

    2024-03-23 15:44:04       34 阅读
  6. LeetCode 33 搜索旋转排序数组

    2024-03-23 15:44:04       38 阅读
  7. LeetCode 33. 搜索旋转排序数组

    2024-03-23 15:44:04       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-23 15:44:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-23 15:44:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-23 15:44:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-23 15:44:04       18 阅读

热门阅读

  1. Vue 面试题(二)

    2024-03-23 15:44:04       22 阅读
  2. 003-基于Jetson Nano平台的在线二维码检测

    2024-03-23 15:44:04       22 阅读
  3. C语言判断回⽂字符串

    2024-03-23 15:44:04       17 阅读
  4. MySQL知识总结

    2024-03-23 15:44:04       18 阅读
  5. Linux - IO

    2024-03-23 15:44:04       15 阅读
  6. capl实现crc校验码计算

    2024-03-23 15:44:04       19 阅读
  7. 蓝桥杯/减肥/c\c++

    2024-03-23 15:44:04       15 阅读
  8. LeetCode算法(一) 之 Python基础

    2024-03-23 15:44:04       19 阅读
  9. 力扣-字符串的最长公共前缀

    2024-03-23 15:44:04       19 阅读
  10. 力扣由浅至深 每日一题.11 加一

    2024-03-23 15:44:04       18 阅读
  11. 前端面试题整理

    2024-03-23 15:44:04       17 阅读
  12. 解决Linux报错JCE cannot authenticate the provider BC

    2024-03-23 15:44:04       16 阅读