노트/Python : 프로그래밍
[leetcode] 92. Reverse Linked List II
Diane_
2022. 11. 22. 09:54
Given the head of a singly linked list and two integers left and right where left <= right, reverse the nodes of the list from position left to position right, and return the reversed list.
Example 1:
Input: head = [1,2,3,4,5], left = 2, right = 4
Output: [1,4,3,2,5]
Example 2:
Input: head = [5], left = 1, right = 1
Output: [5]
Constraints:
- The number of nodes in the list is n.
- 1 <= n <= 500
- -500 <= Node.val <= 500
- 1 <= left <= right <= n
Follow up: Could you do it in one pass?
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution(object):
def reverseBetween(self, head, left, right):
"""
:type head: ListNode
:type left: int
:type right: int
:rtype: ListNode
"""
if not head or left == right:
return head
root = start = ListNode(None)
root.next = head
# start, end 지정
for _ in range(left - 1):
start = start.next
end = start.next
# 반복하면서 뒤집기
for _ in range(right - left): # 2번
tmp = start.next
start.next = end.next
end.next = end.next.next
start.next.next = tmp
return root.next