github.com/taemin-kwon93 Github 보러가기 ->

Data Structures and Algorithms/Problems

LeetCode 1.Two Sum

태민Kwon 2024. 7. 28. 14:24

두 수의 합 링크

 nums = [2, 6, 11, 15], target = 8 이 주어졌을 때, 배열에 있는 두 숫자를 덧셈하여 target과 같은 값을 만들 수 인덱스를 리턴하라. 'nums[0] + nums[1] == target' 인 경우 리턴은 'new int[] {0, 1};' 이다.

 

 이 문제는 Map<Integer, Integer> 자료형을 이용하여 O(n)에 풀이할 수 있다.

인덱스를 조회할때 마다 조건에 대해 판별하고 조건에 부합하면 return 아니면 Map에 데이터를 추가하는 형식으로 진행.

if (map.contains(target - nums[someIdx]))
    return new int[] {map.get(target - nums[someIdx]), someIdx};
	  
map.put(nums[someIdx], someIdx);

 

O(n) 만큼의 반복을 통해 조건 검색

public int[] solution(int[] nums, int target) {
    Map<Integer, Integer> map = new HashMap<>();

    for (int i = 0; i < nums.length; i++) {
        if (map.contains(target - nums[i])) 
            return new int[] {map.get(target - nums[i]), i};
		        
        map.put(nums[i], i);`
    }
    
    return null;
}