zZzZzZzZzZzZ222 2024-11-12 18:53 采纳率: 71.4%
浏览 7
已结题

力扣234遇到的问题

力扣234题,将链表全逆转后,再逐个比较,可是案例【1121】未过,不清楚是什么原因。
https://leetcode.cn/problems/palindrome-linked-list/?envType=problem-list-v2&envId=linked-list



/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        ListNode *p=nullptr,*q,*rhead=nullptr;
        p=head;
        while(p)
        {
            q=p->next;
            p->next=rhead;
            rhead=p;
            p=q;
        }
        while(head&&rhead)
        {
            if(head->val!=rhead->val)
            {
                return false;
            }
            head=head->next;
            rhead=rhead->next;
        }
        return true;
    }
};

  • 写回答

2条回答 默认 最新

  • 真相重于对错 2024-11-13 09:01
    关注

    代码错误很多,你的第一个循环把列表反转,但是你的反转是在原列表反转修改了源列表,所以head的next 指向了nullptr也就是说无法通过head遍历整个列表,注意源列表是一个单向的列表。
    所以后面无法通过首尾指针比较

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月21日
  • 已采纳回答 11月13日
  • 创建了问题 11月12日