件名の説明:
整数配列NUMSと目標値の目標を考えると、配列内の2つの整数の目標値を特定し、その配列の添字に戻るにお願いします。
あなたは、各入力が一つだけ答えに対応することを想定することができます。ただし、同じ配列要素を再使用することはできません。
例:
所与NUMS = [2、7、11、15]、目標= 9
なぜならNUMS [0] + NUMS [1 ] = 2 + 7 = 9
返される[0,1]
出典:滞在ボタン(LeetCode)
リンク://leetcode-cn.com/problems/two-sum:httpsの
トピック書き込み機能のパラメータによって与えられたleetcodeに与えられたハンドラので、
#include<stdio.h>
int* twoSum(int* nums, int numsSize, int target, int* returnSize);
int main()
{
int arr[4] = {2,7,11,15};
int len = sizeof(arr) / 4;
int target;
printf("请输入目标值:\n");
scanf("%d",&target);
int *returnsize;
int *r = twoSum(arr, len, target, returnsize);
printf("[%d,", r[0]);
printf("%d]", r[1]);
}
int* twoSum(int* nums, int numsSize, int target, int *returnSize)
{
//遍历数组找target
static int a[2] = {0};
for(int i = 0; i < numsSize -1; i++)
{
for(int j = i + 1; j < numsSize; j++)
{
if(nums[i] + nums[j] == target)
{
a[0] = i;
a[1] = j;
*returnSize = 2; //代表返回数组的大小
return a;
}
}
}
*returnSize = 0;
return a;
}
私はこのアプローチが最も発生しやすいはずです、簡単な時間の複雑さは、空間的複雑性O(1)の一定のレベル、暴力的なO(N ^ 2)であり、後に良い書き込みが再び追加期待しています。
私はちょうどより多くの交流の不備、自分自身の学習過程を記録するためにこれを取る、白です。