아래에 언급 된 leetcode 문제에 대한 더 나은 솔루션을 찾고있었습니다.
정수 배열이 주어지면 특정 대상에 합산되도록 두 숫자의 인덱스를 반환합니다.
각 입력에 정확히 하나의 솔루션이 있다고 가정 할 수 있으며 동일한 요소를 두 번 사용할 수 없습니다.
let 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]
}
}
}
};
지도를 사용하여 O (n) 시간에이를 수행 할 수 있습니다. 배열의 각 숫자 (숫자)를 반복하고 target - num
이미 맵에 있는지 확인합니다 . 존재하는 경우 이전 반복에서 이미 현재 숫자에 추가 될 때 대상을 반환하는 숫자를 본 것을 의미합니다. 그리고 각 반복에서 우리는 현재 숫자를 키로, 인덱스를 맵에 값으로 넣습니다.
const twoSum = (nums, target) => {
const map = new Map();
for (let i = 0; i < nums.length; i++) {
const diff = target - nums[i];
if (map.has(diff)) {
return [map.get(diff), i];
}
map.set(nums[i], i);
}
return [];
};
console.log(twoSum([1, 2, 3, 4, 5], 9));
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다