博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
234. Palindrome Linked List
阅读量:5966 次
发布时间:2019-06-19

本文共 1026 字,大约阅读时间需要 3 分钟。

问题描述

Given a singly linked list, determine if it is a palindrome.

【解题思路】
1. 遍历链表,快慢指针,找到链表后半部分。
2. 反转链表,可以参考。
3. 然后比较前半部分和后半部分的val值。

快慢指针是链表中常用的技巧,也是常用算法之一。

class Solution {public:    bool isPalindrome(ListNode* head) {        if(head==NULL||head->next==NULL)            return true;        ListNode* slow=head;        ListNode* fast=head;        while(fast->next!=NULL&&fast->next->next!=NULL){            slow=slow->next;            fast=fast->next->next;        }        slow->next=reverseList(slow->next);        slow=slow->next;        while(slow!=NULL){            if(head->val!=slow->val)                return false;            head=head->next;            slow=slow->next;        }        return true;    }    ListNode* reverseList(ListNode* head) {        ListNode* pre=NULL;        ListNode* next=NULL;        while(head!=NULL){            next=head->next;            head->next=pre;            pre=head;            head=next;        }        return pre;    }};

转载于:https://www.cnblogs.com/CarryPotMan/p/5343687.html

你可能感兴趣的文章
ORA-02266: 表中的唯一/主键被启用的外键引用
查看>>
Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法
查看>>
Apache common-fileupload用户指南
查看>>
day-6 and day-7:面向对象
查看>>
IE维护(IEM)策略不再适用于IE10及后续IE版本
查看>>
Java7中的ForkJoin并发框架初探(下)—— ForkJoin的应用
查看>>
java中的重量级与轻量级概念
查看>>
Linux设备驱动工程师之路——硬件访问及混杂设备LED驱动
查看>>
进程和线程<一>
查看>>
远程算数程序——版本v1.0
查看>>
Mysql常见四种索引的使用
查看>>
说说Android桌面(Launcher应用)背后的故事(一)——揭开她神秘的面纱
查看>>
第一篇:zc706 开箱及开发环境搭建
查看>>
python-冒泡排序
查看>>
Mac下修改Hosts文件工具——Gas Mask
查看>>
协程函数应用
查看>>
CSU Double Shortest Paths 湖南省第十届省赛
查看>>
webgl像机世界
查看>>
php正则怎么使用(最全最细致)
查看>>
javascript数学运算符
查看>>