250x250
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 |
Tags
- 리소스모니터링
- List
- set
- JPA
- priority_queue
- string
- union_find
- Properties
- BFS
- html
- GC로그수집
- dfs
- CSS
- date
- Calendar
- 스택
- Java
- deque
- alter
- sql
- 힙덤프
- javascript
- 큐
- map
- 스프링부트
- spring boot
- scanner
- NIO
- math
- Union-find
Archives
- Today
- Total
매일 조금씩
Leet code (Medium): 19. Remove Nth Node From End of List - JAVA 본문
알고리즘/LinkedList
Leet code (Medium): 19. Remove Nth Node From End of List - JAVA
mezo 2024. 10. 19. 20:45728x90
반응형
두개의 포인터를 사용하는 것이 포인트다.
초반엔 스택을 사용해서 푸는 방법을 생각했는데 그러다 보니 어차피 사라질 노드를 타겟으로 잡게되어서 고려해야할 상황들이 너무많았다.
두개의 포인터를 다음과 같은 용도로 사용한다.
- 첫번째 포인터: 삭제될 노드와 N만큼 차이나는 뒤쪽 노드
- 두번째 포인터: 삭제될 노드를 next로 가지는 노드
따라서 두 포인터는 N+1 만큼의 차이를 갖는다.
반복문을 통해, 첫번째 노드부터 끝까지 탐색하는데
첫번째 포인터가 마지막 노드를 넘어서 null이 될 때, 두번째 포인터는 삭제될 노드를 next로 가리키고 있고,
반복문은 멈춘다.
그리고 두번째 포인터의 next 를 next.next로 바꾸면 된다.
/**
* 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 removeNthFromEnd(ListNode head, int n) {
ListNode res = new ListNode(0, head);
// 삭제될 노드의 전 노드
ListNode dummy = res;
// head를 n만큼 뒤로 밀기
for(int i = 0; i < n; i++){
head = head.next;
}
// head가 끝을 넘어가면 멈추게 되고,
// 그때, dummy는 삭제될 노드의 전 노드를 가리키는 상태가됨
while(head != null){
head = head.next;
dummy = dummy.next;
}
dummy.next = dummy.next.next;
return res.next;
}
}
728x90
반응형
'알고리즘 > LinkedList' 카테고리의 다른 글
Leet code (Medium): 143. Reorder List - JAVA (2) | 2024.10.20 |
---|---|
Leet code (Hard): 23. Merge k Sorted Lists - JAVA (0) | 2024.10.17 |
Leet code (Easy) : 21. Merge Two Sorted Lists - JAVA (0) | 2024.10.16 |
Leet code (Easy) : 141. Linked List Cycle - JAVA (1) | 2024.10.16 |
Leet code (Easy) : 206. Reverse Linked List - JAVA (0) | 2024.10.16 |