ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 328. Odd Even Linked List
    Programming/leetcode 2021. 2. 15. 23:31
    728x90

    Linked List 순서를 홀,짝으로 구분해서 홀수 먼저 출력하고, 이후 짝수를 출력하는 문제

     

    예를 들어, 1->2->3->4->5->NULL이면 홀수 자리는 1->3->5가 있고, 짝수 자리는 2->4가 있다, 

    따라서 결과 값은 1->3->5->2->4->NULL

     

    1) 홀수와 짝수를 구분하여 넣는 Linked List를 만들고

    2)홀수 마지막과 짝수 처음을 연결한다. 

     

    그림으로 설명을 해보면, 

    처음 odd와 even이라는 ListNode에 각 첫번째 홀수와 짝수 자리를 가르키도록 한다. 

     

     

    반복문이 진행때마다 2칸씩 건너뛰면서 다음 자료를 가르키도록 만들면 된다. 

    1) 처음에는 odd, even만 있고, while문을 통해서 계속 해서 연결해나간다. 

    2) 마지막에 odd와 even_first를 연결한다.

        def oddEvenList(self, head: ListNode) -> ListNode:
            if not head:
                return None
            odd = head
            even = head.next
            even_head = head.next
    
            while even and even.next:
                odd.next = odd.next.next
                even.next = even.next.next
                
                odd = odd.next
                even = even.next
            
            odd.next = even_head
            
            return head
    

    'Programming > leetcode' 카테고리의 다른 글

    20. Valid Parentheses  (0) 2021.02.16
    92. Reverse Linked List II  (0) 2021.02.15
    24. Swap Nodes in Pairs  (0) 2021.02.15
    1342. Number of Steps to Reduce a Number to Zero  (0) 2021.02.14
    538. Convert BST to Greater Tree  (0) 2021.02.11
Designed by Tistory.