[리트코드] 0143. 재주문 목록

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

중간


단일 연결 목록의 헤드가 제공됩니다. 목록은 다음과 같이 표현될 수 있습니다.

0 → 엘1 → … → 엘n-1 → 엘N

다음 형식이 되도록 목록을 재정렬합니다.

0 → 엘N → 엘1 → 엘n-1 → 엘2 → 엘n-2 →…

목록의 노드에 있는 값은 수정할 수 없습니다. 노드 자체만 변경할 수 있습니다.

 

예시 1:

입력: 머리 = [1,2,3,4]
산출: [1,4,2,3]

예 2:

입력: 머리 = [1,2,3,4,5]
산출: [1,5,2,4,3]

 

제약:

  • 목록의 노드 수가 다음 범위 내에 있습니다. [1, 5 * 10 4 ].
  • 1 <= Node.val <= 1000

파이썬

				
					# 시간 복잡도: O(n) # 공간 복잡도: O(1) 입력 가져오기 선택적 클래스 ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class 해결 방법: def reorderList(self, head: Optional[ListNode]) -> 없음: 헤드가 아닌 경우: 빠른 반환 = 헤드 느림 = 빠른 동안 헤드 및 fast.next: fast = fast.next.next 느린 = 느린.next prev = 없음 curr = 느린 동안 curr: curr.next, prev, curr = prev, curr, curr.next first = 선두 second = 이전 while second.next: first.next, first = second, first.next second.next, second = first, second.next return root = ListNode(1) root.next = ListNode(2) root.next.next = ListNode(3) root.next.next.next = ListNode(4) root.next.next.next.next = ListNode(5) root.next.next.next.next.next = ListNode(6) print(Solution().reorderList(root))
				
			
ko_KR한국어