Using Hashmap (Optimal solution)
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function (nums, target) {
let myMap = new Map();
for (let i = 0; i < nums.length; i++) {
myMap.set(nums[i], i);
}
for (let i = 0; i < nums.length; i++) {
let remaining = target - nums[i];
if (myMap.has(remaining) && myMap.get(remaining) !== i) {
return [i, myMap.get(remaining)];
}
}
};
Using Pointers
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let left = 0;
let right = 1
while(left <= nums.length-1){
if(nums[left] + nums[right] === target){
return [left,right]
}else if (right === nums.length-1){
left++;
right = left+1;
}
else{
right++;
}
}
};
Top comments (0)