题解 | #判断一个链表是否为回文结构#

判断一个链表是否为回文结构

https://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    bool isPail(ListNode* head) {
        if(head==nullptr||head->next==nullptr){
            return true;
        }
        ListNode* n1=head;
        ListNode* n2=head;
        while(n2->next!=nullptr&&n2->next->next!=nullptr){//在判断这个边界条件的时候,一定要判断快指针的,慢的永远赶不上快的;
              n1=n1->next;
              n2=n2->next->next;
        }
	  //将链表中点的右端反转
        n2=n1->next;
        n1->next=nullptr;
        ListNode* n3=nullptr;
        while(n2!=nullptr){
            n3=n2->next;
            n2->next=n1;
            n1=n2;
            n2=n3;
        }
        n3=n1;
        n2=head;
        bool ans=true;
        while(n1!=nullptr&&n2!=nullptr){
            if(n1->val!=n2->val){
                ans=false;
                break;
            }
            n1=n1->next;
            n2=n2->next;
        }
	  //还原链表
        n2=n3->next;
        n3->next=nullptr;
        while(n2!=nullptr){
            n1=n2->next;
            n2->next=n3;
            n3=n2;
            n2=n1;
        }
        return ans;
    }
};

全部评论

相关推荐

宇算唯航:目测实缴资本不超100W的小公司
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务