[ 오늘의 코테 연습장 ] [ LeetCode ] 1. Two Sum

Mini_me·2023년 8월 31일
0

공부[코테연습장]

목록 보기
26/36
post-thumbnail

📑 문제

int 배열의 nums와 target이 주어졌습니다. 배열의 두개의 원소를 더해서 target과 같아지는 배열의 인덱스를 구하세요.

📑 문제 접근 방식

HashTable을 이용하여 문제를 해결했습니다. 처음에는 배열을 돌며, target과 같아지는 두개의 배열 인덱스를 구할려고 했지만, HashMap을 이용해서 푸는 것이 시간복잡도가 훨씬 작아질 것같아서, HashMap을 이용하여 구현했습니다.
배열을 돌며, target - 배열의 원소 = remainNum이라는 변수를 두어, HashMap에 remainNum이 포함된다면, remainNum의 인덱스와 i ( 현재 인덱스 ) 를 정답 배열에 담아 반환합니다.
만약에, remainNum이 HashMap에 없다면, 인덱스와 해당 인덱스의 값을 HashMap에 저장합니다.

📑 Code

class Solution {
    public int[] twoSum(int[] nums, int target) {
       HashMap<Integer,Integer> numsMap = new HashMap<>();
       int[] answer = new int[2];
    
       for(int i = 0 ; i < nums.length ; i++){
       int remainNum = target - nums[i] ;
        if(numsMap.containsKey(remainNum)  ){
            answer[0] = numsMap.get(remainNum);
            answer[1] = i;
       }
       else 
        numsMap.put(nums[i], i);
    }   
     return  answer;
}
}

0개의 댓글

관련 채용 정보