• [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;
    }
    };

    profile
    ํ•ด๋Š”์„ 

    ๊ธฐ๋ก์„ ๋‚จ๊ธฐ๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค

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

    ๋Œ“๊ธ€