程式語言 - LeetCode - C++ - 33. Search in Rotated Sorted Array



參考資訊:
https://algo.monster/liteproblems/33
https://www.cnblogs.com/grandyang/p/4325648.html

題目:


解答:

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int l = 0;
        int r = nums.size() - 1;

        while (l <= r) {
            int m = l + ((r - l) / 2);

            if (nums[m] == target) {
                return m;
            }

            if (nums[l] <= nums[m]) {
                if ((nums[l] <= target) && (target < nums[m])) {
                    r = m - 1;
                }
                else {
                    l = m + 1;
                }
            }
            else {
                if ((nums[m] < target) && (target <= nums[r])) {
                    l = m + 1;
                }
                else {
                    r = m - 1;
                }
            }
        }

        return -1;
    }
};