본문 바로가기
Algorithm/파이썬 알고리즘 인터뷰

[베열] 두 수의 합

by 밤초록 2022. 1. 10.
1 | two sum | Easy
https://leetcode.com/problems/two-sum/

 

 

 

 

이상 코드

 

부르트 포스 

 

class Solution:
    def twoSum(self, nums: List[int], target: int) -> 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]

 

 

in 이용 탐색

 

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i, n in enumerate(nums):
            complement = target - n

            if complement in nums[i + 1:]:
                return [nums.index(n), nums[i + 1:].index(complement) + (i + 1)]

 

 

첫 번째 수를 뺀 결과 키 조회

 

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        nums_map = {}

        # exchange key and value and save as dictionary
        for i, num in enumerate(nums):
            nums_map[num] = i

        # provide case : nums = [3, 2, 4], target = 6
        for i, num in enumerate(nums):
            if target - num in nums_map and i != nums_map[target - num]:
                return [i, nums_map[target - num]]

 

 

조회 구조 개선 (for 하나)

 

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        nums_map = {}
        for i, num in enumerate(nums):
            if target - num in nums_map:
                return [nums_map[target - num], i]
            nums_map[num] = i

 

반응형

댓글