Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 2차원배열 구간합
- json
- 마리아DB 쿼리 로그
- @NoArgsConstructor
- InterruptException
- 백준
- pseudo-code
- 자바 람다식
- 슈더코드
- jquery
- MariaDB Query Log
- 합배열
- function test
- Java
- ajax
- this
- 백준 11660번
- 구간합구하기
- @AllArgsConstructor
- select
- 상속과 참조
- 생성자
- map()
- Bean LifecCycle
- SQL
- 백준 1235번
- 구간합
- interrupted()
- 백준 11659번
- this와 this() 차이
Archives
- Today
- Total
평범한 연구소
[leetCode] Two Sum (JAVA) 본문
주어진 nums 배열에서 두 인덱스 값의 합이 target인 인덱스 2개를 찾으면 된다.
풀이 방법은 2가지.
- 2중for문을 사용하면 간단하지만 시간복잡도가 높다는 단점이 있다.
- HashMap을 사용하여 9(target)=2+7 → 9(target)-2=7 원리로 찾는 방법
package leetcode;
import java.util.Arrays;
import java.util.HashMap;
public class TwoSum {
public int[] twoSum(int[] nums, int target) {
/*
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] == target) {
return new int[] { i, j };
}
}
}
*/
HashMap<Integer, Integer> map = new HashMap<>();
for(int i=0; i<nums.length; i++) {
map.put(nums[i], i);
}
for(int i=0; i<nums.length; i++) {
Integer pre = map.get(target - nums[i]);
if(pre != null && pre != i) {
return new int[] {i, pre};
}
}
return new int[] {};
}
public static void main(String[] args) {
int[] nums = { 1, 4, 7, 8 };
int target = 11;
TwoSum t = new TwoSum();
System.out.println(Arrays.toString(t.twoSum(nums, target)));
}
}
'JAVA > 알고리즘 공부' 카테고리의 다른 글
[백준] 2839번: 설탕 배달 (JAVA) (0) | 2022.11.27 |
---|---|
[백준] 17478번: 재귀함수가 뭔가요? (JAVA) (0) | 2022.11.23 |
[백준] 1874번: 스택 수열 (JAVA) (0) | 2022.11.19 |
[백준] 9012번: 괄호 (JAVA) (0) | 2022.11.12 |
[백준] 9093번: 단어 뒤집기 (JAVA) (0) | 2022.11.07 |