LeetCode 167. Two Sum II - Input array is sorted
开始忘记了写break,后面没有考虑到答案到下标不是从0开始到
第一次提交
LeetCode 167. Two Sum II - Input array is sorted
代码

int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {
    int i = 0;
    int j = numbersSize - 1;
    *returnSize = 2;
    int *ret = (int*)malloc(sizeof(int) * 2);
    while(i < j) {
        int sum = numbers[i] + numbers[j];
        if (sum == target) {
            ret[0] = i + 1;
            ret[1] = j + 1;
            break;
        } else if (sum > target) {
            j--;
        } else {
            i++;
        }
    }
    return ret;
}

这个解法是前后扫描的
内存有点高了
调整了下if的顺序
LeetCode 167. Two Sum II - Input array is sorted

int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {
    int i = 0;
    int j = numbersSize - 1;
    *returnSize = 2;
    int *ret = (int*)malloc(sizeof(int) * 2);
    while(1) {
        int sum = numbers[i] + numbers[j];
        if (sum > target) {
            j--;
        } else if (sum < target) {
            i++;
        } else {
            ret[0] = i + 1;
            ret[1] = j + 1;
            break;
        }
    }
    return ret;
}

复用参数
LeetCode 167. Two Sum II - Input array is sorted

int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {
    int i = 0;
    int j = numbersSize - 1;
    while(1) {
        int sum = numbers[i] + numbers[j];
        if (sum > target) {
            j--;
        } else if (sum < target) {
            i++;
        } else {
            *returnSize = 2;
            numbers[0] = i + 1;
            numbers[1] = j + 1;
            return numbers;
        }
    }
    return NULL;
}

相关文章:

  • 2022-03-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-04
  • 2021-12-23
猜你喜欢
  • 2021-07-29
  • 2021-11-22
  • 2021-10-14
  • 2021-11-26
  • 2021-12-14
  • 2022-01-09
  • 2021-12-12
相关资源
相似解决方案