这个题我的答案通不过,但是我觉得我写的是对的,当然,细节的话可能会有失误,因为没有测试,所以如果有啥问题就反馈。
1 #include<stdio.h> 2 #include<stdlib.h> 3 int* twoSum(int* nums, int numsSize, int target, int* returnSize) { 4 int map[100]; 5 map[0] = target - nums[0]; 6 for (int i = 1; i < numsSize; i++) { 7 for (int j = 0; j < sizeof(map)/sizeof(*map); j++) { 8 if (nums[i] == map[j]) { 9 returnSize[0] = j; 10 returnSize[1] = i; 11 } 12 return returnSize; 13 } 14 map[i] = target - nums[i]; 15 } 16 17 } 18 19 int main() { 20 int a[4] = { 2,7,11,15 }; 21 int b[2]; 22 int target = 9; 23 twoSum(a, sizeof(a) / sizeof(*a), target, b); 24 25 printf("[%d,%d] ", b[0],b[1]); 26 27 return 0; 28 }
函数刚开始的那个map[100]我是无奈加的,因为vs2019不通过动态内存。
思路就是哈希表