관리 메뉴

솜씨좋은장씨

[leetCode] 92. Reverse Linked List II (Python) 본문

Programming/코딩 1일 1문제

[leetCode] 92. Reverse Linked List II (Python)

솜씨좋은장씨 2020. 12. 26. 17:42
728x90
반응형

Reverse a linked list from position m to n. Do it in one-pass.

Note: 1 ≤ m  n ≤ length of list.

 

Example:

Input: 1->2->3->4->5->NULL, m = 2, n = 4
Output: 1->4->3->2->5->NULL

첫번째 시도

# 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, m: int, n: int) -> ListNode:
        list_nums = []
        
        while head != None:
            list_nums.append(head.val)
            head = head.next
            
        sub_m_n = "".join(list(map(str, list_nums[m-1:n])))[::-1]
    
        list_nums[m-1:n] = list(map(int, list(sub_m_n)))
        
        answerList = ListNode(0)
        
        result = answerList
        
        for num in list_nums:
            answerList.next = ListNode(num)
            answerList = answerList.next
            
        return result.next

linkedlist의 모든 값을 리스트로 만든 후에 필요한 부분만 반대로 돌리도록 했는데

반대로 돌리는 부분을 string으로 변환한 후에 반대로 돌리려고 했는데 음수가 있다는 것을 깜빡해서 실패했습니다.

 

Solution

# 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, m: int, n: int) -> ListNode:
        list_nums = []
        
        while head != None:
            list_nums.append(head.val)
            head = head.next
            
        sub_m_n = list_nums[m-1:n]
        
        reverse_sub = []
        
        for i in range(len(sub_m_n)-1, -1, -1):
            reverse_sub.append(sub_m_n[i])
            
        list_nums[m-1:n] = reverse_sub
        
        answerList = ListNode(0)
        
        result = answerList
        
        for num in list_nums:
            answerList.next = ListNode(num)
            answerList = answerList.next
            
        return result.next

 

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments