Given an array of integers nums
and an integer target
, return indices of the two numbers such that they add up to target
.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Array
- Very straightforward O(n^2) solution
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
for(let i = 0; i < nums.length; i++) {
for(let j = i + 1; j < nums.length; j++) {
if(nums[i] + nums[j] === target) {
return [i, j];
}
}
}
};
- Hashmap O(n) solution
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
// O(n) hashmap solution
var twoSum = function(nums, target) {
let map = new Map();
for(let i = 0; i < nums.length; i++) {
if(map.has(target - nums[i])) {
// map.get will get the 1st number index and current number index
return [map.get(target - nums[i]), i];
}
// set the number and its index
map.set(nums[i], i)
}
return [];
}