개발을 시작하는 이야기

[LeetCode] Two Sum 본문

개발 이야기/Algorithm Study

[LeetCode] Two Sum

Teiresias 2022. 6. 2. 14:33

Swift Study 이주의 문제 4


Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

 

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]

Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

 

Constraints:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • Only one valid answer exists.

 

Follow-up: Can you come up with an algorithm that is less than O(n2) time complexity?


문제를 처음 보고 이걸 어케 해야하나 싶었는데

target에서 nums[i]를 빼고 남은 값이 있는지 확인해서 dict에 넣어주는 방식으로 해결함.

class Solution {
    func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
        var dict = [Int: Int]()
        
        for i in 0..<nums.count {
            let value = nums[i]
            let remainder = target - value
            if let solutionIndex = dict[remainder] {
                return [solutionIndex, i]
            }
            dict[value] = i
        }
        return [0, 0]
    }
}
Runtime: 74 ms, faster than 46.28% of Swift online submissions for Two Sum.
Memory Usage: 14.5 MB, less than 51.93% of Swift online submissions for Two Sum.

'개발 이야기 > Algorithm Study' 카테고리의 다른 글

[BaekJoon] 팩토리얼  (0) 2022.06.05
[BaekJoon] 회의실 배정  (0) 2022.06.02
[프로그래머스] 두 정수 사이의 합  (0) 2022.06.02
[BaekJoon] 주사위 세개  (0) 2022.06.02
[BaekJoon] 알람 시계  (0) 2022.06.02