题目来源:
33. 搜索旋转排序数组 - 力扣(LeetCode)
代码实现:
class Solution {
public:int search(vector<int>& nums, int target) {//闭区间写法int n=nums.size();int left=0,right=n-1;while(left<=right){int mid=(left+right)>>1;if(target==nums[mid]) return mid;if(nums[left]<=nums[mid]){//从left到mid有序if(target>=nums[left]&&target<nums[mid]){//target 在这段区间上right = mid-1;//慢慢缩小区间}else left=mid+1;//不在这段区间上}else{ //从left到mid无序if(target>nums[mid]&&target<=nums[right]){left=mid+1;}else right=mid-1;}}return -1;}
};
题目心得:
- 有些做法效率很高,很精妙,但是不具备可学习性,一定要找自己能看得懂的,下次可以自己写出来的