일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- javascript
- map
- JPA
- string
- 리소스모니터링
- scanner
- dfs
- 큐
- deque
- 스프링부트
- union_find
- Calendar
- GC로그수집
- sql
- Union-find
- NIO
- Java
- set
- spring boot
- BFS
- List
- date
- html
- CSS
- priority_queue
- 스택
- alter
- Properties
- 힙덤프
- math
- Today
- Total
목록2024/10/16 (4)
매일 조금씩
LinkedList 의 개념을 다시 잡을 수 있었다.연결된 노드 객체들은 다음 노드를 가리키는 포인터를 갖는다.사이클이 없다면, LinkedList의 헤드를 가리키는 더미 노드를 임의로 생성해서 활용해도 된다.이 문제에선 그 더미노드를 사용하는 것이 핵심이다. /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */cl..
LinkedList 내에 사이클이 존재하는지 확인하는 문제다. 사이클이 있는지 확인하는 좋은 알고리즘을 발견했다. 빠른 포인터와 느린 포인터 두 개를 사용하여 LinkedList를 탐색하는 방법이다.빠른 포인터는 느린 포인터보다 두 배 빠르게 이동한다.주기가 있는 경우 빠른 포인터는 결국 느린 포인터를 따라잡는다.주기가 없으면 빠른 포인터가 목록의 끝에 도달하고 함수는 False를 반환한다.이 알고리즘은 단일 LinkedList에서 주기를 감지하는 효율적인 방법이다. /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val..
링크드리스트의 개념을 이해하도록 도와주는 문제였다. /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode next = nu..
개념Interval은 구간 배열 or 리스트가 주어지며, 구간을 삽입, 삭제, 병합 하는 문제가 주어진다. 특징관련 문제 유형은 다음 세가지로 볼 수 있다.새로운 구간 하나를 구간들 사이에 넣기.구간들의 겹치는 부분을 정리하기.최대 겹치는 구간 길이 구하기.이때, 각 구간은 [시작점, 끝점]의 형식으로 시작점과 끝점이 배열로 정의되어 있다. interval 문제는 정렬이 중요하다.구간 배열이 intervals라고 하면 시작점이나 끝점을 기준으로 오름차순 정렬을 하는 것이 기본이다.// start 기준 오름차순 정렬Arrays.sort(intervals, (a,b) -> Integer.compare(a[0], b[0]);// end 기준 오름차순 정렬Arrays.sort(intervals, (a,b) -..