관리 메뉴

CASSIE'S BLOG

LeetCode 1. Two Sum 본문

PROGRAMMING/LEETCODE

LeetCode 1. Two Sum

ITSCASSIE1107 2023. 5. 16. 09:33

 

 

 

 

-이중 FOR문으로 모든 조합 확인하기

i는 그래서 nums.length-1까지 (j때문에)

j는 nums.length까지

 

 

-new int[]{i, j}를 평가하면 [i, j]라는 배열이 생성되며, 이 배열은 길이가 2이고 첫 번째 요소는 i이고 두 번째 요소는 j임. 따라서 return new int[]{i, j}[i, j]라는 길이 2인 배열을 반환함

 

-Array (배열) 초기화
배열 또한 변수와 같이 중괄호 {} 를 이용해 선언과 동시에 초기화 가능
ex) datatype[] array_name = {element1, element2, ...}

 

-오류 이유

return int[] nums2 = {i, j};

return 키워드 뒤에는 값을 반환하는 표현식이나 변수가 와야함. 하지만 int[] nums2 = {i, j};는 선언문이기 때문에 return 키워드와 함께 사용될 수 없음

 

보통은 첫 번째 방식인 return new int[]{i, j};를 더 자주 사용합니다. 그 이유는 반환되는 배열을 바로 생성하고 전달하므로 코드가 간결하고 직관적임.

 

 

 

class Solution {
    public int[] twoSum(int[] nums, int target) {

    for(int i =0; i<nums.length-1; i++){
         for(int j = i+1; j<nums.length; j++){
             if(nums[i] + nums[j] == target){
                 return new int[] {i, j};
             }

         }

     }

        return new int[] {};
    }
}

 

 

Optimized Code 참고용

 

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

 

반응형