Two Sum algorithm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
* twoSum indexOf 方法
*/
var twoSum = function(nums, target) {
for (let i=0;i<nums.length;i++){
var index = nums.indexOf(target-nums[i])
if (index>-1 && index!=i){
return [i,index]
}
}
return []
};

/*
* hash algorithm
*/
var twoSum = function(nums, target) {
var map={}
for (let i=0;i<nums.length;i++){
if (map.hasOwnProperty(target-nums[i])){
return [map[target-nums[i]],i]
}
map[nums[i]]=i
}
return []
};
/*
* two point algorithm
*/
var twoSum = function(nums, target) {
var l=0,r=nums.length-1, newNums=nums.concat()
//At first, sorting.
newNums.sort((a,b)=>a-b)
while(l!=r){
var m = newNums[l] + newNums[r] - target
if (m < 0){
l++
}else{
if(m==0){
// lastIndexOf for solving : [3,3] and 6 is [0,1]
return [nums.indexOf(newNums[l]),nums.lastIndexOf(newNums[r])]
}
r--
}
}
return []
}
var re=twoSum([2,11,7,7],9)
console.log(re)