https://leetcode.com/problems/two-sum/
배열의 요소를 저장하기 위한 해시 테이블을 만듭니다.
배열을 반복하고 각 요소에 대해 타겟에서 해당 요소를 뺀 값이 해시 테이블에 있는지 확인합니다.
타겟에서 해당 요소를 뺀 값이 해시 테이블에 있는 경우 타겟에 합산되는 두 숫자를 찾았습니다. 두 숫자의 인덱스를 반환합니다.
타겟에서 해당 요소를 뺀 값이 해시 테이블에 없는 경우 다음 요소로 계속 진행합니다.
배열의 모든 요소를 확인할 때까지 단계 2-4를 반복합니다.
다음은 Python에서 이 알고리즘을 구현하는 방법의 예입니다.
def two_sum(nums, target):
"""
타겟에 합산되는 배열의 두 숫자를 찾습니다.
Args:
nums: 숫자 배열.
target: 타겟 합계.
Returns:
타겟에 합산되는 두 숫자의 인덱스 목록.
"""
hash_table = {}
for i in range(len(nums)):
hash_table[nums[i]] = i
for i in range(len(nums)):
complement = target - nums[i]
if complement in hash_table:
return [i, hash_table[complement]]
return None
알고리즘은 다음과 같이 작동합니다.
배열의 요소를 저장하기 위한 해시 테이블을 만듭니다.
배열을 반복하고 각 요소에 대해 타겟에서 해당 요소를 뺀 값이 해시 테이블에 있는지 확인합니다.
타겟에서 해당 요소를 뺀 값이 해시 테이블에 있는 경우 타겟에 합산되는 두 숫자를 찾았습니다. 두 숫자의 인덱스를 반환합니다.
타겟에서 해당 요소를 뺀 값이 해시 테이블에 없는 경우 다음 요소로 계속 진행합니다.
배열의 모든 요소를 확인할 때까지 단계 2-4를 반복합니다.
알고리즘은 O(n) 시간 복잡도를 가지며 n은 배열의 요소 수입니다.