File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed
remove-nth-node-from-end-of-list Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .LinkedList ;
2
+
3
+ // Definition for singly-linked list.
4
+ class ListNode {
5
+ int val ;
6
+ ListNode next ;
7
+ ListNode () {}
8
+ ListNode (int val ) { this .val = val ; }
9
+ ListNode (int val , ListNode next ) { this .val = val ; this .next = next ; }
10
+ }
11
+
12
+ class Solution {
13
+
14
+ public static void main (String [] args ) {
15
+ Solution s = new Solution ();
16
+ var node = new ListNode (1 , new ListNode (2 ));
17
+ s .removeNthFromEnd (node , 1 );
18
+ }
19
+
20
+ public ListNode removeNthFromEnd (ListNode head , int n ) {
21
+ // 문제: 링크드리스트의 head가 주어지면 끝에서 N번째 노드를 삭제한 결과를 반환하라
22
+ // 풀이: n번째만큼 first 이동, 그 후 second를 1칸씩 함께 이동 시킨다 first가 끝에 도달할 때 까지
23
+ // 전체 길이 L, 주어진 N이 있을때 이렇게 하면 L - N - 1 위치를 구할 수 있다.
24
+ // TC: O(N)
25
+ // SC: O(1)
26
+ var dummy = new ListNode (-1 , head );
27
+ var first = head ;
28
+ for (int i =0 ; i <n ; i ++) {
29
+ first = first .next ;
30
+ }
31
+
32
+ var second = dummy ;
33
+
34
+ while (first != null ) {
35
+ first = first .next ;
36
+ second = second .next ;
37
+ }
38
+
39
+ second .next = second .next .next ;
40
+ return dummy .next ;
41
+ }
42
+
43
+ }
You can’t perform that action at this time.
0 commit comments