25. Reverse Nodes in k-Group

LONGNEW·2023년 7월 17일
0

CP

목록 보기
126/155

https://leetcode.com/problems/reverse-nodes-in-k-group/?envType=featured-list&envId=top-google-questions

input :

  • head, k

output :

  • 모든 인접한 k개의 노드끼리 값이 뒤집어진 형태의 싱글 링크드 리스트의 head를 반환하시오.

조건 :


Solution explain : Solution1

idea

  • 이전 링크드 리스트를 제작하듯 값들을 모두 데이터에 저장하여 사용하자.
  • 반복문을 통해 모든 값들을 swap해준다.
  • 슬라이싱과 [::-1] 연산을 활용하여 뒤집는 형태를 만들어 주자.
  • idx를 통해 변경된 원소 값으로 각 노드의 val를 업데이트하자.

주의

from typing import Optional, List
# 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]:
        data = []

        temp = head
        while temp:
            data.append(temp.val)
            temp = temp.next

        for i in range(0, len(data), k):
            if i + k > len(data):
                break
            temp = data[i:i + k][::-1]

            for j in range(i, i + k):
                data[j] = temp[j - i]

        temp, idx = head, 0
        while temp:
            temp.val = data[idx]
            temp, idx = temp.next, idx + 1
        return head

node7 = ListNode(4, None)
node6 = ListNode(3, node7)
node5 = ListNode(2, node6)
node4 = ListNode(1, node5)
s = Solution()
ret = s.reverseKGroup(node4, 3)
while ret:
    print(ret.val, end=" ")
    ret = ret.next

0개의 댓글