Reverse Linked List II

김_리트리버·2021년 4월 1일
0

[알고리즘]

목록 보기
40/47
# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

""" 
head 를 가지고 조작하면 역순으로 정렬된 것을 만들기 힘듦

head 를 포함한 list 를 만들어 그 list 를 역순으로 정렬하고자 했다.

Input: head = [1,2,3,4,5], left = 2, right = 4 에서 바꾼다고 가정하면

2,3,4 에서 변경을 해줘야 함 

2,3,4 -> 3,2,4 -> 4,3,2

temp = 끊었던 list 를 저장하기 위한 변수

end_temp = 순서를 바꿀 영역 ( 순서를 바꿀 때마다, 순서를 바꾼 숫자를 빼서 이동)

 """

class Solution:
    def reverseBetween(self, head: ListNode, left: int, right: int) -> ListNode:

        result = current = ListNode()
        result.next = head

        for i in range(left-1):
            current = current.next

        end_temp = current.next

        for i in range(right - left):

            temp = current.next
            current.next = end_temp.next

            end_temp.next = end_temp.next.next
            current.next.next = temp

        return result.next
profile
web-developer

0개의 댓글