[力扣 Hot100]Day24回文链表

题目描述

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
出处

思路

首先计算链表长度n,然后拿一个数组存前n/2项,若n为奇数则略过第n/2+1项,随后对链表后n/2项遍历,与数组内容比对即可。

代码

class Solution {
public:
    bool isPalindrome(ListNode* head) {
        vector<int> stack;
        int n=0;
        ListNode* p=head;
        while(p!=nullptr) {
            p=p->next;
            n++;
        }
        p=head;
        for(int i=0; i<n/2; i++){
            stack.push_back(p->val);
            p=p->next;
        }
        if(n%2==1)
            p=p->next;
        for(int i=n/2-1; i>=0; i--){
            if(p->val!=stack[i])
                return false;
            p=p->next;
        }
        return true;
    }
};

你可能感兴趣的:(力扣Hot100题,leetcode,算法)