티스토리 뷰
728x90

연결리스트의 역을 구하는 문제이다.
ListNode를 매개변수로 받는 reverseList메서드의 틀이 주어진다.
Problem :
class Solution {
public ListNode reverseList(ListNode head) {
}
}
이 때, ListNode의 정의가 다음과 같이 주어진다.
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; }
}
풀이는 reverseList메서드에 작성하면 된다.
Solution :
재귀함수를 이용해 연결리스트의 역을 구하는 방법이다.
class Solution {
public ListNode reverseList(ListNode head) {
// 현재 노드 -> 가장 마지막 노드가 됨
// 지금까지 역처리한 이전노드 없음(null)
return reverse(head, null);
}
private ListNode reverse(ListNode curr, ListNode prev) {
// 현재 노드가 null인 경우, 끝에 도달했으므로 이전 노드가 첫 노드가 됨
if (curr == null) {
return prev;
}
// 실제 다음 노드는 새로운 변수에 할당
// 역 연결리스트의 이전 노드가 될 예정
ListNode next = curr.next;
// 실제 이전 노드는 역 연결리스트의 다음 노드로 설정
curr.next = prev;
// 다음 역전 대상은 실제 다음 노드와 현재 노드
return reverse(next, curr);
}
}
Example:

728x90
'KR > 코딩테스트' 카테고리의 다른 글
[LeetCode/MEDIUM] 2. Add Two Numbers (JAVA) : 문제&풀이 (0) | 2023.08.07 |
---|---|
[LeetCode/EASY] 242. Valid Anagram : 문제&풀이 (0) | 2023.08.06 |
[LeetCode/MEDIUM] 3. Longest Substring Without Repeating Characters (JAVA) : 문제&풀이 (1) | 2023.08.01 |
[LeetCode/MEDIUM] 49. Group Anagrams (JAVA) : 문제&풀이 (0) | 2023.07.11 |
[LeetCode/MEDIUM] 438. Find All Anagrams in a String (JAVA) : 문제&풀이 (0) | 2021.04.13 |