面试题 02.06. 回文链表

编程入门 行业动态 更新时间:2024-10-21 17:24:50

面试题 02.06. <a href=https://www.elefans.com/category/jswz/34/1769494.html style=回文链表"/>

面试题 02.06. 回文链表

题目来源:

        leetcode题目,网址:面试题 02.06. 回文链表 - 力扣(LeetCode)

解题思路:

       快慢指针,快指针指向第二个节点,慢指针指向第一个节点。然后快指针每次向后移动两个节点,慢指针向后移动一个节点的同时翻转前面的链表。最后遍历前半个链表和后半个链表比较即可。

解题代码:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:bool isPalindrome(ListNode* head) {if(head==nullptr || head->next==nullptr){return true;}ListNode* pre=nullptr;ListNode* slow=head;ListNode* quick=head->next;ListNode* formor=nullptr;ListNode* latter=nullptr;while(quick!=nullptr){quick=quick->next;ListNode* temp=slow->next; slow->next=pre;pre=slow;slow=temp;if(quick==nullptr){latter=slow;formor=pre;}else{quick=quick->next;if(quick==nullptr){latter=slow->next;formor=pre;}}}while(formor!=nullptr){if(formor->val!=latter->val){return false;}formor=formor->next;latter=latter->next;}return true;}
};
 

总结:

        官方题解给出了三种解法。第一种是复制到数组中后用双指针。第二种是递归比较。第三种是快慢指针。


更多推荐

面试题 02.06. 回文链表

本文发布于:2023-12-03 23:39:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1659041.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:回文   面试题   链表

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!