> 웹 프론트엔드 > JS 튜토리얼 > LeetCode: twoSum 문제

LeetCode: twoSum 문제

DDD
풀어 주다: 2024-12-13 07:24:12
원래의
888명이 탐색했습니다.

LeetCode: twoSum Problem

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿