arr = [1,3,7,192,23]
target = 193
배열과 target number가 주어질 때, 해당 target을 만들어 줄 수 있는 배열의 두 요소의 index를 반환하라.
[0,3]
Brute Force로 O(n^2)
으로 풀 수 있지만, 이건 답이 아니다.
hash를 사용해서 O(n)
으로 풀 수 있다.
먼저 모든 값을 Hash에 넣는다. 이후 배열을 순회하면서 key값에 target-i의 값이 있는지 확인한다.
있다면 해당 배열의 index 값을 return 한다.
class Solution:
def twoSum(self,nums,target):
hash_map = dict()
for index,value in enumerate(nums):
hash_map[value]=index
result =[]
for i in range(len(nums)):
if target-nums[i] in hash_map:
result.append(i)
result.append(hash_map[target-nums[i]])
return result
a = Solution()
two_sum = a.twoSum([2, 7, 11, 15], 9)
print(two_sum)