-
[linked list] reverse linked list 2Algorithm/LeetCode 2025. 6. 6. 12:11
✅ Problem
https://leetcode.com/problems/reverse-linked-list-ii/description/
✅ Approach & Solution
방식)
더보기- head 노드를 가리키는 임시 노드를 생성한다.
- start와 end 노드를 고정하고 한 단계씩 뒤집기를 수행한다.
/** * 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 reverseBetween(ListNode head, int left, int right) { if (head == null) { return null; } ListNode root = new ListNode(0); // 임시 노드 선언 root.next = head; // 임시 노드부터 시작해 변경 필요한 위치 앞으로 이동 ListNode start = root; for (int i = 0; i < left - 1; i++) { start = start.next; } // 변경 필요한 마지막 위치 선언 ListNode end = start.next; // right - left만큼 위치 변경 진행 // start와 end가 가리키는 노드를 고정하고 한 단계씩 뒤집기 수행 for (int i = 0; i < right - left; i++) { ListNode tmp = start.next; start.next = end.next; end.next = end.next.next; start.next.next = tmp; } // 첫 번째 노드는 임시 노드이므로 그 다음부터 결과로 리턴 return root.next; } }
'Algorithm > LeetCode' 카테고리의 다른 글
[stack] valid parentheses (0) 2025.06.07 [linked list] odd even linked list (0) 2025.05.25 [linked list] swap nodes in pairs (0) 2025.05.04 [linked list] add two numbers (0) 2025.04.20 [linked list] reverse linked list (0) 2025.04.20