Reorder List

박수빈·2022년 3월 8일
0

leetcode

목록 보기
38/51


문제

  • linked list의 순서를 바꾸는 문제
  • 맨 뒤의 노드부터 앞으로 가져와 사이사이에 넣는다
  • in-place

풀이

  • list에 노드 저장
  • 뒤에서부터 절반까지 다시 연결
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reorderList(self, head: Optional[ListNode]) -> None:
        """
        Do not return anything, modify head in-place instead.
        """
        li = []
        thisNode = head
        while thisNode.next:
            li.append(thisNode)
            thisNode = thisNode.next
        li.append(thisNode)
            
        N = len(li)
        insertPoint = 0
        for i in range(N-1, N//2, -1):
            li[insertPoint].next = li[i]
            li[i].next = li[insertPoint+1]
            insertPoint += 1
        
        li[N//2].next = None

결과

profile
개발자가 되고 싶은 학부생의 꼼지락 기록

0개의 댓글