思路:指针夹逼
本题和上一题问题结构一模一样,建议先搞懂上一题。
该数组由两段连续递增的区间构成,先搞清楚T在哪一段。
原理是一样的:T>=a[n] , 则T∈第一段 , 反之T∈第二段
接着二分过程就是不停的判断T , mid两者的位置关系,以此来逼近T的真实位置
整数数组 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)的算法解决此问题。
n,表示数组的长度。n 个整数,表示旋转后的数组 nums。target,表示需要查找的目标值。target 在数组中的索引,若不存在则输出 -1。7
4 5 6 7 0 1 2
0
4
7
4 5 6 7 0 1 2
3
-1
1
1
0
-1
提示:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册