Given an array of integers, return indices of the two numbers such that
they add up to a specific target.
You may assume that each input would have exactly one solution,
and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
var twoSum = function(nums, target) {
};
함수의 인풋으로 nums라는 배열이 주어지고, 그 배열의 2개의 인덱스의 값들을 더해서
target이라는 숫자가 나오면 그 해당하는 인덱스를 배열에 담아 리턴하는 문제이다.
var twoSum = function(nums, target) {
//eazy단계의 문제라 단순하게 생각해서 2중 for문을 사용해서
for(let i=0; i<nums.length; i++){
for(let j=0; j<nums.length; j++){
if(nums[i]+nums[j]===target){
return [i , j]
}
}
}
}
Runcode해보니 통과하길래 되겠구나! 별생각없이 submit을 눌렀더니
주어진 배열을 중복적으로 값을 더해서 리턴하기 때문에
target이 4라면
[0,0]이 return되어버린다.
배열은 한개가 주어졌는데, 내가 임의로 하나의 배열을 더 만든 셈이다.
그래서 틀렸다.
하지만 이중포문을 사용해야 하는건 맞는 것 같아서
i와 j의 값을 서로 겹치지만 않게 하면 될것 같아서 조건을 하나 중첩해서 주었다.
var twoSum = function(nums, target) {
//eazy단계의 문제라 단순하게 생각해서 2중 for문을 사용해서
for(let i=0; i<nums.length; i++){
for(let j=0; j<nums.length; j++){
if(i!==j){
if(nums[i]+nums[j]===target){
return [i , j]
}
}
}
}
}
이렇게 하니 통과하였고,
이중for문은 시간복잡도가 좋지않아 reduce로 해볼까 하다가
리턴하는게 인덱스라 그냥 진행했다.