미소를뿌리는감자의 코딩

[leetcode 2024/02/13] 328. Odd Even Linked List 본문

코딩 테스트/leetcode

[leetcode 2024/02/13] 328. Odd Even Linked List

미뿌감 2024. 2. 13. 14:15
728x90

https://leetcode.com/problems/odd-even-linked-list/description/

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

1. 접근 방법

node를 하나씩 읽어가면서, left_node, right_node에 번갈아가면서 노드를 저장하였다.

이후 선언해 놓은 right_node의 head를 left_node의 끝과 연결해 주었다.

 

++ 노드를 하나씩 생성해가면서 값을 저장하는 것보다, 원래 있던 노드에서 .next의 방향을 바꾸는 것이 속도적인 측면에서 나을 것 같다.

 

2. 코드

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def oddEvenList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        left_node = ListNode(0)
        head1 = left_node
        right_node = ListNode(0)
        head2 = right_node

        while head:
            left_node.next = ListNode(head.val)
            left_node = left_node.next
            head = head.next
            if not head:
                break
            right_node.next = ListNode(head.val)
            right_node = right_node.next
            head = head.next
        
        left_node.next = head2.next

        return head1.next
728x90