본문 바로가기
Coding Test/LeetCode

[LeetCode] 92. Reverse Linked List II [Python(파이썬)]

'파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀

문제 👉 <Reverse Linked List II - LeetCode>

1. 문제 (역순 연결리스트 II)

인덱스 left에서 right까지를 역순으로 만들어라.

인덱스 left은 1부터 시작한다.

2. 풀이

  • 반복문을 이용한 풀이

start = left - 1, end = left

left = 2, right = 4
s  e              s     e         s        e
1->2->3->4->5     1->3->2->4->5   1->4->3->2->5

3. 코드

  • 반복문을 이용한 풀이
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseBetween(self, head: ListNode, left: int, right: int) -> ListNode:
        if left == right : return head

        root = start = ListNode(0)
        root.next = head

        for _ in range(left-1):
            start = start.next       

        end = start.next

        # s  e              s     e         s        e
        # 1->2->3->4->5     1->3->2->4->5   1->4->3->2->5
        for _ in range(right-left):
            temp, start.next, end.next = start.next, end.next, end.next.next
            start.next.next = temp 

        return root.next
  • 결과 :
방식 Status Runtime Memory Language
반복문 [Accepted] 28 ms 14.1 MB python3

몇번을 풀어도 어려운 문제 같다...



References


🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋

댓글