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



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

題目:


解答:

int search(int* nums, int numsSize, int target)
{
    int l = 0;
    int r = numsSize - 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;
}