twoSum 문제는 문제 해결 및 알고리즘 능력을 테스트하는 고전적인 코딩 과제입니다.
이번 게시물에서는 먼저 이해하기 쉬운 간단한 솔루션을 살펴보겠습니다. 그런 다음 효율성을 높이기 위해 단계별로 최적화하겠습니다. 알고리즘을 처음 접하는 사람이든 인터뷰를 준비하는 사람이든 이 가이드는 문제를 해결하는 데 도움이 될 것입니다. 시작해 보세요!
let inputArray = [2, 7, 11, 15] let target = 9 console.log(twoSum(inputArray, target)) // Output: [0, 1]
함수가 처리해야 하는 입력과 출력을 살펴보겠습니다.
배열이 [2,7,11,15]이고 대상이 9인 경우 출력은 [0,1]이 됩니다.
인덱스 0과 1의 값을 더하면 목표값인 9가 되기 때문입니다.
function twoSum(nums, target) { const hashMap = {} }
해시맵을 생성하여 배열의 숫자를 키로, 인덱스를 값으로 저장하는 솔루션을 생각해 보겠습니다.
function twoSum(nums, target) { const hashMap = {} for (let i = 0; i < nums.length; i++) { hashMap[nums[i]] = i } }
이것이 솔루션의 첫 번째 부분입니다: hashMap 준비
다음 루프에서는 hashMap에 대상의 보수에서 배열의 현재 숫자를 뺀 값이 포함되어 있는지 확인합니다.
function twoSum(nums, target) { const hashMap = {} for (let i = 0; i < nums.length; i++) { hashMap[nums[i]] = i } for (let i = 0; i < nums.length; i++) { const complement = target - nums[i] if (hashMap[complement] !== undefined && hashMap[complement] !== i) { return [i, hashMap[complement]] } } }
hashMap에서 보완 항목이 발견되면 해당 값이 있으므로 해당 인덱스에 액세스할 수 있습니다.
그런 다음 현재 반복을 나타내는 i와 함께 해당 값(보완의 인덱스)을 포함하는 배열을 반환할 수 있습니다.
이 솔루션에서는 두 개의 별도 루프를 생성하는 것을 볼 수 있습니다. 이를 단일 루프로 결합하여 한 번의 반복을 절약할 수 있습니다.
function twoSum(nums, target) { const hashMap = {} for (let i = 0; i < nums.length; i++) { const complement = target - nums[i] if (hashMap[complement] !== undefined && hashMap[complement] !== i) { return [i, hashMap[complement]] } hashMap[nums[i]] = i } }
더 나은 명확성을 위해 조건을 개선하여 다음 코드를 얻었습니다.
function twoSum(nums, target) { const hashMap = {} for (let i = 0; i < nums.length; i++) { const complement = target - nums[i] if (complement in hashMap) { return [i, hashMap[complement]] } hashMap[nums[i]] = i } } let inputArray = [2, 7, 11, 15] let target = 9 console.log(twoSum(inputArray, target)) // Output: [0, 1]
위 내용은 LeetCode: twoSum 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!