[LeetCode] 1. Two Sum - Java[자바]

doxxx·2023년 8월 29일
0

LeetCode

목록 보기
14/25
post-thumbnail

링크

문제

정수 숫자 배열 nums와 정수 target이 주어졌을 때, 두 숫자의 합이 target이 되는 두 숫자의 인덱스를 반환합니다.

각 입력에 정확히 하나의 해가 있다고 가정할 수 있으며, 같은 요소를 두 번 사용할 수 없습니다.

어떤 순서로든 답을 반환할 수 있습니다.

풀이

import java.util.*;  
  
class Solution {  
  
    HashMap<Integer, Integer> valueIndexMap = new HashMap<>();  
  
    public int[] twoSum(int[] nums, int target) {  
        for (int i = 0; i < nums.length; i++) {  
            valueIndexMap.put(nums[i], i);  
        }  
  
        for (int i = 0; i < nums.length; i++) {  
            int pair = target - nums[i];  
            if (valueIndexMap.containsKey(pair) && valueIndexMap.get(pair) != i) {  
                return new int[]{i, valueIndexMap.get(pair)};  
            }  
        }  
  
        return new int[]{};  
    }  
}

주어진 배열 원소의 값을 키로, 원소의 인덱스를 값으로 갖는 map을 만들어줍니다.

다시 배열을 탐색하면서, target에서 현재 원소값을 뺀 값이 map에 있는지 확인합니다.

존재한다면, 배열로 감싸서 return합니다.

0개의 댓글