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 }
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 };