• [LeetCode] 328. Odd Even Linked List

    2022. 1. 15.

    by. ํ•ด๋Š”์„ 

    linked list๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ, ํ™€์ˆ˜๋ฒˆ์งธ ๋…ธ๋“œ์™€ ์ง์ˆ˜๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋”ฐ๋กœ ๋ชจ์œผ๊ณ , ํ™€์ˆ˜๋ฒˆ์งธ ๋…ธ๋“œ ๋ฆฌ์ŠคํŠธ -> ์ง์ˆ˜๋ฒˆ์งธ ๋…ธ๋“œ ๋ฆฌ์ŠคํŠธ๋กœ ์ถœ๋ ฅํ•˜๋ผ๋Š” ๋ฌธ์ œ๋‹ค.

     

    ๋จผ์ € ์˜ˆ์™ธ์‚ฌํ•ญ์„ ์ฒดํฌํ•ด์ฃผ๊ณ , ๊ทธ ๋’ค flag๋ฅผ ๋‘ฌ์„œ ์ง์ˆ˜๋ฒˆ์งธ์ธ์ง€ ํ™€์ˆ˜๋ฒˆ์งธ์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๋ฉด์„œ ๊ฐ๊ฐ์˜ linked list์— ์—ฐ๊ฒฐํ•ด์ฃผ๊ณ , ๋งˆ์ง€๋ง‰์— ํ™€์ˆ˜ ๋ฆฌ์ŠคํŠธ์˜ next๋ฅผ ์ง์ˆ˜ ๋ฆฌ์ŠคํŠธ์˜ head๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ์—ˆ๋‹ค. 

     

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode() : val(0), next(nullptr) {}
     *     ListNode(int x) : val(x), next(nullptr) {}
     *     ListNode(int x, ListNode *next) : val(x), next(next) {}
     * };
     */
    
    class Solution {
    public:
        ListNode* oddEvenList(ListNode* head) {
            
            if (head == NULL) return NULL;
            else if (head->next == NULL) return head;
            
            ListNode* oddhead = head;
            ListNode* evenhead = head->next;
            
    
            
            ListNode* odd = oddhead;
            ListNode* even = evenhead;
            
            head = head->next->next;
    
            oddhead->next = NULL;
            evenhead->next = NULL;
    
            
            int flag = 1;
            
            while (head!= NULL){
                
                if (flag == 1){
                    odd->next = head;
                    odd = odd->next;
                    head = head->next;
                    odd->next = NULL;
                    flag = 0;
                }
                else{
                    even->next = head;
                    even = even->next;
                    head = head->next;
                    even->next = NULL;
                    flag = 1;
                }
                
                
            }
            
            
            odd->next = evenhead;
              
            return oddhead;
        }
    };

    '๐Ÿ“šSTUDY > ๐Ÿ‘€ coding test๋Œ€๋น„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [LeetCode] 2. Add Two Numbers  (0) 2022.01.15
    [LeetCode] 59. Spiral Matrix II  (0) 2022.01.15
    [๋ฐฑ์ค€] 1158๋ฒˆ ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ  (0) 2020.02.08

    ๋Œ“๊ธ€