leetcode第15题
时间: 2023-03-13 14:12:37 浏览: 153
这个题目要求你使用两个数组来找出两个数字的和等于给定值的所有不同组合。为此,你可以使用双指针法,从两个数组的最左端(最小的数字)开始,比较两个指针指向的数字的和,如果等于给定的值,则将其作为一个结果返回;如果小于给定的值,则将左指针右移;如果大于给定的值,则将右指针左移。
相关问题
leetcode第一题详情
LeetCode第一题详情:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入都只对应一种答案,且同样的元素不能被重复利用。例如,给定 nums = [2, 7, 11, 15], target = 9,因为 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]。
leetcode 第一题用C语言怎么解决
LeetCode 第一题是两数之和,即给定一个整数数组和一个目标值,在数组中找到两个数,使它们的和等于目标值。
下面是用 C 语言的解决方案:
```
#include <stdio.h>
#include <stdlib.h>
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int i, j;
int *result = (int *)malloc(2 * sizeof(int));
for (i = 0; i < numsSize; i++) {
for (j = i + 1; j < numsSize; j++) {
if (nums[i] + nums[j] == target) {
result[0] = i;
result[1] = j;
*returnSize = 2;
return result;
}
}
}
return NULL;
}
int main(void) {
int nums[] = {2, 7, 11, 15};
int target = 9;
int returnSize;
int *result = twoSum(nums, 4, target, &returnSize);
if (result == NULL) {
printf("No solution found.\n");
} else {
printf("result[0] = %d, result[1] = %d\n", result[0], result[1]);
free(result);
}
return 0;
}
```
这个算法的时间复杂度是 $O(n^2)$,空间复杂度是 $O(1)$。
阅读全文