[Leetcode]33. Search in Rotated Sorted Array
阿新 • • 發佈:2018-11-24
思路很簡單,分類討論:
如果要查詢的數小於陣列第一個數,那就在旋轉後的後半陣列
如果要查詢的數大於陣列第一個數,那就在前半陣列找
坑點:
1.注意空輸入
2.注意看是否有可能有重複的數存在,這個題是沒有重複的數的
//劍指offer上面有 const int x=[]{ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return 0; }(); class Solution { public: int search(vector<int>& nums, int target) { if(nums.empty()) return -1; if(target >= nums[0]){ int l = 0; int r = nums.size() - 1; while(l <= r){ int m = l + ((r - l) >> 1); if(nums[m] == target) return m; if(nums[m] < nums[0]){ r = m - 1; continue; } if(nums[m] < target){ l = m + 1; }else{ r = m - 1; } } }else if(target <= nums[nums.size()-1]){ int l = 0; int r = nums.size() - 1; while(l <= r){ int m = l + ((r - l) >> 1); if(nums[m] == target) return m; if(nums[m] > nums[nums.size()-1]){ l = m + 1; continue; } if(nums[m] < target){ l = m + 1; }else{ r = m - 1; } } } return -1; } };