[LeetCode]팰린드롬 연결 리스트

Inhwan98·2023년 2월 7일
0

PTU STUDY_leetcode

목록 보기
13/24

문제

연결 리스트가 팰린드롬 구조인지 판별하라.

예제

  • Example 1:
Input: head = [1,2,2,1]
Output: true
  • Example 2:
Input: head = [1,2]
Output: false

코드

/**
 * 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:
    vector<int> v;
    void display(ListNode* head)
	{
		if (head == NULL) cout << "\n";
		else
		{
			v.emplace_back(head->val);
			display(head->next);
		}
	}

    bool isPalindrome(ListNode* head)
    {
        display(head);

        auto right = v.end() - 1;
        for (auto left = v.begin(); left < right; ++left, --right)
	    {
	        if (*left != *right)
	        {
		        return false;
		    }
	    }

    return true;

    }
};

풀이

1.

연결리스트의 val 값을 재귀함수를 사용하여 vector v에 차례대로 넣는다.

2.

v에 처음을 가리키는 반복자와 끝을 가리키는 반복자를 생성하여 양쪽에서 서로 비교하며
반복자를 좁혀준다. 좁혀지는 양쪽이 서로 같지않다면 false를 return한다.


결과

Runtime 288 ms / Memory 128.2 MB
https://leetcode.com/problems/palindrome-linked-list/submissions/893506889/


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

profile
코딩마스터

0개의 댓글