【leetcode】-25. Reverse Nodes in k-Group 반전 k 그룹

1700 단어 LeetCode

Reverse Nodes in k-Group

  • 제목
  • 귀속
  • python 코드

  • 제목


    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.
    Example:
    Given this linked list: 1->2->3->4->5
    For k = 2, you should return: 2->1->4->3->5
    For k = 3, you should return: 3->2->1->4->5
    Note:
    Only constant extra memory is allowed. You may not alter the values in the list’s nodes, only nodes itself may be changed.

    차례로 돌아가다


    제목은 체인 시계의 길이보다 작은 k개의 체인 시계를 반전시키고 k개가 부족한 체인 시계의 순서는 변하지 않도록 요구한다.이 문제는 언뜻 보기에는 매우 복잡하지만, 사실은 먼저 첫 번째 그룹의 k개의 체인 시계를 뒤집은 다음에 나머지 부분을 새로운 체인 시계로 보고 귀속 계산을 할 수 있다.

    python 코드

    # 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: ListNode, k: int) -> ListNode:
            if not head:
                return None
            a = b = head
            for i in range(k):
                if not b:
                    return head
                b = b.next
            newHead =  self.reverse(a,b)
            a.next = self.reverseKGroup(b,k)
            
            return newHead
        
        def reverse(self,a,b):
            pre = None
            cur = a
            nxt = a
            while cur != b:
                nxt = cur.next
                cur.next = pre
                pre = cur
                cur = nxt
            return pre
    

    좋은 웹페이지 즐겨찾기