用c语言双指针法实现two sums完整代码
时间: 2024-02-16 22:59:49 浏览: 118
c语言的指针代码
4星 · 用户满意度95%
下面是用C语言双指针法实现two sums的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
int *twoSum(int *nums, int numsSize, int target) {
int *result = (int *)malloc(2 * sizeof(int));
int left = 0, right = numsSize - 1;
while (left < right) {
int sum = nums[left] + nums[right];
if (sum == target) {
result[0] = left;
result[1] = right;
return result;
} else if (sum < target) {
left++;
} else {
right--;
}
}
return NULL;
}
int main() {
int nums[] = {2, 7, 11, 15};
int target = 9;
int *result = twoSum(nums, sizeof(nums) / sizeof(int), target);
printf("[%d, %d]\n", result[0], result[1]);
free(result);
return 0;
}
```
代码中使用了两个指针`left`和`right`分别指向数组头和尾,每次比较它们的和与目标值的大小,如果和小于目标值,则将左指针向右移动一位,如果和大于目标值,则将右指针向左移动一位,直到找到两个数的和为目标值,返回它们的下标即可。在函数结束时,需要释放动态分配的结果数组。
阅读全文