-
25. Reverse Nodes in k-GroupLeetcode 2021. 5. 25. 14:12
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
class Solution(object): def reverseKGroup(self, head, k): """ :type head: ListNode :type k: int :rtype: ListNode """ if k == 1: return head l = [] cur = head while cur: l.append(cur.val) cur = cur.next for i in range(0, len(l), k): if len(l) < (i+k): break l[i:i+k] = l[i:i+k][::-1] head = ListNode(l[0]) cur = head for el in l[1:]: tmp = ListNode(el) cur.next = tmp cur = cur.next return headRuntime: 44 ms, faster than 44.35% of Python online submissions for Reverse Nodes in k-Group.
- 이 솔루션보다 stack을 이용하여 풀었으면 runtime이 더 개선되겠다..
'Leetcode' 카테고리의 다른 글
27. Remove Element (0) 2021.05.25 26. Remove Duplicates from Sorted Array (0) 2021.05.25 24. Swap Nodes in Pairs (0) 2021.05.25 23. Merge k Sorted Lists (0) 2021.05.18 22. Generate Parentheses (0) 2021.05.18