这道题使用两种方法依次使用基本的C语言暴力解决和JavaScript的hash思想
1.C语言暴力解决
int* twoSum(int* nums, int numsSize, int target) {
int first = 0,last = 0,value;
int *key;
key = (int*)calloc(2,sizeof(int));
for(first = 0;first < numsSize ;first++)
for(last = first+1;last < numsSize;last++){
value = nums[first]+nums[last];
if(value == target){
key[0] = first;
key[1] = last;
//printf("last:%d",last);
return key;
}
}
key[0] = -1;
key[1] = -1;
return key;
}
2,JavaScript 的hash思想
var twoSum = function(nums, target) {
var map = {};
var number = [-1,-1];
for(var i = 0 ;i<nums.length;i++){
map[nums[i]] = i;
}
for(var i = 0 ;i<nums.length;i++){
var index = target - nums[i];
//console.log(index);
if((map[index]||map[index] === 0)&& i!= map[index]){
number[0] = i;
number[1] = map[index];
return number;
}
}
return number;
};
3还可以先排序再查找。
此题是在初次实习三个月后回来写的题,对代码质量的理解,和代码思想的迅速构建有了明显的提高。