leetcode
Leet code 1 -Two sum
monsangter
2023. 4. 11. 06:58
array 문제이다. combination 모듈 사용후 filter, index 사용을 생각해 보았으나, 그러면 o n2의 시간 복잡도를 초과하게 된다.
브루트 포스로도 n2의 시간 복잡도를 만족시킬 수 있다.
from itertools import combinations
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
# ~을 뽑아서 타겟값을 만든다. 아웃풋으로 그 재료의 인다이스값 반환.
# 다만 조건에서 두개만 뽑으면 됨을 말하고 있다.
# 브루트포스? 일단 타겟보다 크거나 같은 수는 조사할 필요가 없지.
# 라기엔 음양수가 있다. 한번 뽑은 거 또 뽑기는 안됨.
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
해쉬맵을 이용한 풀이.
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
d = {}
for i, j in enumerate(nums):
r = target - j
if r in d: return [d[r], i]
d[j] = i
신박하다..