程式語言 - LeetCode - C - 34. Find First and Last Position of Element in Sorted Array



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

題目:


解答:

int find_element(int *nums, int numsSize, int t)
{
    int l = 0;
    int r = numsSize;

    while (l < r) {
        int m = l + ((r - l) >> 1);

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

    return r;
}

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* searchRange(int* nums, int numsSize, int target, int* returnSize)
{
    int *r = calloc(2, sizeof(int));
    int st = find_element(nums, numsSize, target);    

    *returnSize = 2;
    if ((st == numsSize) || (nums[st] != target)) {
        r[0] = -1;
        r[1] = -1;
        return r;
    }

    r[0] = st;
    r[1] = find_element(nums, numsSize, target + 1) - 1;
    return r;
}