remove duplicates from sorted array

Desc:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:
Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    if ((nums == NULL) && (returnSize == NULL)) {
        return NULL;
    }
    if (nums == NULL) {
        *returnSize = 0;
        return NULL;
    }
    if (returnSize == NULL) {
        return NULL;
    }
    if (numsSize == 0) {
        *returnSize = 0;
        return NULL;
    }

    int *ret_array = (int*)malloc(sizeof(int) * 2);
    if (ret_array == NULL) {
        *returnSize = 0;
        return NULL;
    }

    int first = -1;
    int last = -1;
    int i = 0;
    int j = 0;
    int hit = 0;
    for (i = 0; i < numsSize - 1; i++) {
        if (nums[i] <= target) {
            if (first == -1) {
                first = i;
                for (j = i + 1; j < numsSize; j++) {
                    if ((nums[j] + nums[first]) == target) {
                        last = j;
                        hit = 1;
                        break;
                    }
                }
                
                if (hit == 1) {
                    break;
                }
                
                first = -1;
                last = -1;
            }
        }
    }
    
    if (hit == 1) {
        ret_array[0] = first;
        ret_array[1] = last;
        *returnSize = sizeof(int) * 2;
        return ret_array;
    }

    free(ret_array);
    ret_array = NULL;
    *returnSize = 0;
    return NULL;
}