Reverse Nodes in k-Group - LeetCode
SLL에서 k개씩 노드를 뒤집은 SLL을 반환하는 문제이다.
고려한 사항들은 다음과 같다.
풀이 과정은 다음과 같다.
SLL을 3개의 포인터로 뒤집는 문제와 유사했다. 2개의 런너를 사용해서 풀이할 수 있었으며, stack을 이용해서 거꾸로 데이터들을 담을 수 있었다.
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
answer = left = ListNode(0, head)
while left:
right = left.next
stack = []
isK = True
for _ in range(k):
if not right:
isK = False
break
stack.append(right)
right = right.next
if not isK:
break
else:
while len(stack) > 0:
left.next = stack.pop()
left = left.next
left.next = right
return answer.next