leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0033.cpp (912B)
0 class Solution { 1 int binary_search(const vector<int> &nums, int target, int low, int high) { 2 while (low <= high) { 3 int mid = low + (high - low) / 2; 4 if (nums[mid] == target) 5 return mid; 6 else if (nums[mid] > target) 7 high = mid - 1; 8 else 9 low = mid + 1; 10 } 11 return -1; 12 } 13 14 public: 15 int search(vector<int> &nums, int target) { 16 int pivot = -1; 17 for (int i = 0; i < nums.size() - 1; i++) { 18 if (nums[i] > nums[i + 1]) { 19 pivot = i; 20 break; 21 } 22 } 23 if (pivot == -1) return binary_search(nums, target, 0, nums.size() - 1); 24 if (nums[0] <= target) 25 return binary_search(nums, target, 0, pivot); 26 else 27 return binary_search(nums, target, pivot + 1, nums.size() - 1); 28 } 29 };