-
leetCode - Reverse Nodes in k-Group프로그래밍/algorithm 2021. 8. 10. 07:22
문제
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes, in the end, should remain as it is.
You may not alter the values in the list's nodes, only nodes themselves may be changed.
Example 1:
Input: head = [1,2,3,4,5], k = 2 Output: [2,1,4,3,5]
Example 2:
Input: head = [1,2,3,4,5], k = 3 Output: [3,2,1,4,5]
Example 3:
Input: head = [1,2,3,4,5], k = 1 Output: [1,2,3,4,5]
Example 4:
Input: head = [1], k = 1 Output: [1]
Constraints:
- The number of nodes in the list is in the range sz.
- 1 <= sz <= 5000
- 0 <= Node.val <= 1000
- 1 <= k <= sz
풀이
function reverseKGroup(head, k) { if (!head) return null; let tail = head; for (let i = 1; i < k; i++) { tail = tail.next; if (!tail) return head; } let next = tail.next; tail.next = null; reverse(head); head.next = reverseKGroup(next, k); return tail; }; function reverse(curr) { let prev = null; while(curr){ let next = curr.next; curr.next = prev; prev = curr; curr = next; } return prev; }
'프로그래밍 > algorithm' 카테고리의 다른 글
백준 - 스택수열 (0) 2021.09.06 leetCode - Remove Duplicates from Sorted Array (0) 2021.08.10 leetcode - Merge k Sorted Lists (0) 2021.08.04 leetCode - Generate Parentheses (0) 2021.07.26 leetCode - Merge Two Sorted Lists (0) 2021.07.26