[leetcode] 25. Reverse Nodes in k-Group

Youn·2021년 10월 2일
0

Algorithm

목록 보기
29/37

문제 설명

링크
연결리스트를 k 길이의 그룹들로 나눠 reverse 하는 문제, 단 O(1) 메모리

접근

  • 리스트의 길이 구하기
  • n // k 만큼 반복문
  • k 길이 만큼 reverse 시킨 후
  • 이 그룹들을 이어주기

코드

    def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
        n = 0
        tmp = head
        while tmp:
            n += 1
            tmp = tmp.next
        res = None
        prevStart = None
        for _ in range(n // k):
            prev = None
            start = head
            for _ in range(k):
                nextNode = head.next
                head.next = prev
                prev = head
                head = nextNode
            if not res:
                res = prev
                prevStart = start
            else:
                prevStart.next = prev
                prevStart = start
        prevStart.next = head
        return res
                
profile
youn

0개의 댓글