프로그래밍언어/알고리즘
Leetcode 문제풀이 난이도 Easy Two Sum Java
by 앵과장
2022. 9. 15. 08:02
반응형
Leetcode
https://leetcode.com/problemset/all/
문제풀이
nums : int[] 타입 배열
target : nums 배열에 속한 2개의 index 합
output : target에 해당하는 2개의 nums배열 index 반환
배열을 2개의 배열로 돌면서 값을 비교해서 동일하면 반환하는 형태로구현 해보도록 하겠습니다.
우선 테스트 코드에 아래처럼 짜보고
package com.codeing.code.leetcode;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
@SpringBootTest
class TwoSumTest {
public int[] twoSum(int[] nums, int target) {
int[] answer = {};
for (int i = 0; i < nums.length -1; i++) {
for (int j = i+1; j < nums.length; j++) {
if(nums[i]+nums[j] == target){
answer = new int[]{i,j};
break;
}
}
}
return answer;
}
public int[] twoSumMap(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if(map.containsKey(nums[i])){
return new int[]{map.get(nums[i]),i};
}
//9-2 7, 0
//9-7 2, 1
//9-11 -2, 2
//9-15 -6, 3
map.put(target - nums[i], i);
}
return new int[]{};
}
@Test
void twoSumTest(){
int[] nums = new int[]{2, 7, 11, 15};
int target = 9;
int[] testValue = new int[]{0,1};
assertArrayEquals(twoSum(nums,target),testValue);
}
@Test
void twoSumMapTest(){
int[] nums = new int[]{2, 7, 11, 15};
int target = 26;
int[] testValue = new int[]{2,3};
assertArrayEquals(twoSumMap(nums,target),testValue);
}
}
정상적으로 잘나오는게 확인이 되었다면
Leetcode에 해당 코드가 잘동작하는지 submit해보겠습니다.
관련 코드는 github에 공유드립니다.
https://github.com/lswteen/codeing/blob/main/src/main/java/com/codeing/code/leetcode/TwoSum.java