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

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

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

题目
图片说明
题解:使用快慢指针找到链表中点,然后对右边一半进行链表反转,然后对两半逐个进行比较节点值

class Solution {
public:
    /**
     * 
     * @param head ListNode类 the head
     * @return bool布尔型
     */
   ListNode *reverse(ListNode *head)//反转链表
   {
       ListNode *pre=nullptr,*next=nullptr;
       while(head)
       {
           next=head->next;
           head->next=pre;
           pre=head;
           head=next;
       }
       return pre;//返回反转链表头节点
   }
    bool isPail(ListNode* head) {
        // write code here
        ListNode *fast=head->next,*slow=head;
        while(fast && fast->next)//快慢指针找到中点
        {
            slow=slow->next;
            fast=fast->next->next;
        }
        ListNode *tmp=slow->next;
        slow->next=nullptr;//切割成两半
        ListNode *r=reverse(tmp);//反转链表
        while(head && r)//对两半逐个节点判断
        {
            if(head->val!=r->val)return false;
            head=head->next;
            r=r->next;
        }
        return true;

    }
};
全部评论

相关推荐

10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务