题解 | #链表的回文结构#

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
#include <cstdlib>

class PalindromeList {
public:
    bool chkPalindrome(ListNode* A) { // 空间复杂度O(1)
        // 找到中间节点
        ListNode* slow = A, * fast = A;
        while (fast && fast->next) {
            slow = slow->next;
            fast = fast->next->next;
        }
        // 反转后半部分 
        ListNode* cur = NULL, * next = NULL;
        while (slow) {
            next = slow->next;
            slow->next = cur;
            cur = slow;
            slow = next;
        }
        // 前半部分和后半部分比较
        next = A;
        while (cur) {
            if (next->val != cur->val) {
                return false;
            }
            next = next->next;
            cur = cur->next;
        }
        return true;
    }

    bool chkPalindrome_(ListNode* A) { // 空间复杂度O(n)
        // 1.创建B链表,将A链表节点依次向B链表头插
        ListNode* B = NULL;
        ListNode* curA = A;
        while (curA) {
            ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
            newNode->val = curA->val;
            newNode->next = NULL;
            if (B == NULL) {
                B = newNode;
            }
            else {
                newNode->next = B;
                B = newNode;
            }
            curA = curA->next;
        }
        // 2.比较
        curA = A;
        ListNode* curB = B;
        while (curA) {
            if (curA->val != curB->val) {
                return false;
            }
            curA = curA->next;
            ListNode* del = curB;
            curB = curB->next;
            free(del);
            del = NULL;
        }
        return true;
    }
};


全部评论

相关推荐

醒工硬件:如果你想投硬件,可以考虑这么改: 1.个人荣誉没太有保留价值,除非一页凑不满 2.主修课程太多了,可以考虑删减一部分,或者分成硬件和嵌入式2个简历,侧重点不一样 3.个人技能放到学习经历下面,项目经历上面。学习一下AD画板,你有基础一两周也差不多学会了,面试官问你就说你会(总不能拉你实操吧),公司里一般用AD和Cadence比较多,AD好上手一些。增加常用仪器工具说明,例如示波器、信号发生器、电子负载、烙铁、风枪等 4.项目,项目可以多换换行,挤在一起不好阅读。可以说下红外那边用什么接口,蓝牙那边用什么接口,用了哪些关键技术点,多用术语。如果你投硬件,就增加项目1描述比重,降低项目2描述比重
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务