当前为游客只读模式。登录后可提交代码判题并保存草稿与进度。
搜索旋转排序数组
中等search()时间限制 2000 ms内存限制 128 MB复杂度要求 时间 O(log n),空间 O(1)
搜索旋转排序数组
整数数组 nums 按升序排列,数组中的值互不相同。
在传递给函数之前,nums 在预先未知的某个下标 k(0 ≤ k < nums.length)上进行了旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]。
例如 [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2]。
给你旋转后的数组 nums 和一个整数 target,如果 nums 中存在这个目标值,则返回它的下标,否则返回 -1。
你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。
约定
- 数组中所有值互不相同。
- 下标从 0 开始。
输入
nums:旋转后的升序数组,1 ≤ nums.length ≤ 5000target:目标整数
输出
目标值的下标;不存在返回 -1。
示例一
输入:
nums = [4,5,6,7,0,1,2], target = 0
输出:
4
示例二
输入:
nums = [4,5,6,7,0,1,2], target = 3
输出:
-1
示例三
输入:
nums = [1], target = 0
输出:
-1
复杂度要求
- 时间复杂度:
O(log n) - 空间复杂度:
O(1)
Loading...
输入
[[4,5,6,7,0,1,2],0]
预期输出
4