본문 바로가기

Algorithm/자료구조

(C++) - LeetCode (easy) 234. Palindrome Linked List

반응형

https://leetcode.com/problems/palindrome-linked-list/description/

 

Palindrome Linked List - LeetCode

Palindrome Linked List - Given the head of a singly linked list, return true if it is a palindrome or false otherwise.   Example 1: [https://assets.leetcode.com/uploads/2021/03/03/pal1linked-list.jpg] Input: head = [1,2,2,1] Output: true Example 2: [https

leetcode.com

자료구조를 이용한 문제였습니다.

📕 풀이방법

📔 풀이과정

O(n)의 공간복잡도, O(n)의 시간복잡도를 가지면 간단하게 해결 가능합니다.head의 모든 원소를 vector v에 넣어줍니다. 이후 양옆에서 가운데로 가며 palindrome을 검사해줍니다.


📕 Code

📔 C++

/**
 * 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:
    bool isPalindrome(ListNode* head) {
        vector <int> v;
        ListNode* cur = head;
        while(cur != NULL) {
            v.push_back(cur->val);
            cur = cur->next;
        }
        for(int i = 0; i < v.size(); i++) {
            if(v[i] != v[v.size() - 1 - i]) return false;
        }
        return true;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.