c++算法题

发布于:2022-12-08 ⋅ 阅读:(584) ⋅ 点赞:(0)

/**

 * Definition for singly-linked list.

 * struct ListNode {

 *     int val;

 *     ListNode *next;

 *     ListNode(int x) : val(x), next(NULL) {}

 * };

 */

 ListNode* reverse(ListNode* head) {

        if(head == nullptr)

        return nullptr;

        ListNode* pre = nullptr;

        ListNode* cur = head;

        ListNode* next = head->next;

        while(cur){

            cur->next = pre;

            pre = cur;

            cur = next;

            if(next)

            next = next->next;

        }

        return pre;

    }

class Solution {

public:

    bool isPalindrome(ListNode* head) {

        ListNode* fast = head;

        ListNode* slow = head;

        while(fast&&fast->next){

            fast = fast->next->next;

            slow = slow->next;

        }

        ListNode* re = reverse(slow);

        while(head&&re){

            if(head->val!=re->val){

            return false;

}

            head = head->next;

            re = re->next;

        }

        return true;

    }

};.

 

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到