大多数答案都是使用C++和java的容器和hashmap解决的,O(n) runtime和O(n) space,网上也搜不到用C的解答
使用暴力破解法(O(n^2) runtime)提示time limited exceed
使用下面的方法,貌似遍历的次数少一些,可以通过oj
int res[2] = {0};
int findLeft(int back[],int n,int left){
int i;
for(i = 0; i < n; i++){
if(back[i] == left)
return i;
}
return -1;
}
int *twoSum(int numbers[], int n, int target) {
int i,j;
int back[10240] = {0};
for(i = 0; i < n; i++){
int left = target - numbers[i];
int tmp = findLeft(back,i,left);
if(tmp >= 0){
res[0] = tmp+1;
res[1] = i + 1;
return res;
}else{
back[i] = numbers[i];
}
}
}