如何解决检查链接列表是否是回文
我陷入了一个问题,我必须做一个函数来检查给定的链表是否是回文。
这是我解决问题的方法,在测试用例(1-> 1-> 2-> 1)中失败了,问题是要检查给定的链表是否回文。
ListNode* reverse(ListNode* head)
{
ListNode* c = head;
ListNode* p = NULL;
ListNode* n;
while (c != NULL) {
n = c->next;
c->next = p;
p = c;
c = n;
}
head = p;
return head;
}
class Solution {
public:
bool isPalindrome(ListNode* head)
{
if (head == NULL || head->next == NULL)
return true;
ListNode* temp = NULL;
temp = reverse(head);
int flag = 0;
while (temp != NULL && head != NULL) {
if (temp->val != head->val) {
flag = 1;
}
head = head->next;
temp = temp->next;
}
if (flag == 0)
return true;
else
return false;
}
};
解决方法
reverse(ListNode* head)
将相同链接列表反向转换为1->2->1->1
。
head
指向最后一个节点1
,而temp
指向第一个节点1
。
在代码中,我们试图将两个链表与起始节点temp
和head
进行比较,由于这些不相等,因此代码给出了错误的答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。