博客
关于我
链表7-链表的回文结构
阅读量:149 次
发布时间:2019-02-27

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

为了判断链表是否为回文结构,可以使用以下方法:

  • 反转链表:通过快慢指针反转链表,防止链表成环。
  • 比较链表:比较原链表和反转后的链表是否相等。
  • 题目描述

    对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。

    给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。

    解题思路

    使用快慢指针反转链表,然后比较原链表和反转后的链表是否相等。

    class PalindromeList {    public:        bool chkPalindrome(ListNode* A) {            if (A == NULL || A->next == NULL) return true;            ListNode* slow = A;            ListNode* fast = A;            ListNode* prev = NULL;            while (fast && fast->next) {                prev = slow;                slow = slow->next;                fast = fast->next->next;            }            if (fast != NULL && fast->val != A->val) return false;            if (prev != NULL) prev->next = NULL;            ListNode* newhead = NULL, *cur = slow;            while (cur) {                ListNode* next = cur->next;                cur->next = newhead;                newhead = cur;                cur = next;            }            slow = newhead;            while (A) {                if (A->val != slow->val) return false;                A = A->next;                slow = slow->next;            }            return true;        }}
    这个方法的时间复杂度是O(n),额外空间复杂度为O(1)。通过快慢指针反转链表,防止链表成环,然后比较原链表和反转后的链表是否相等来判断是否为回文结构。

    转载地址:http://asbb.baihongyu.com/

    你可能感兴趣的文章
    Oracle 启动阶段 OPEN
    查看>>
    Oracle 在Drop表时的Cascade Constraints
    查看>>
    Oracle 在Sqlplus 执行sql脚本文件。
    查看>>
    Oracle 如何处理CLOB字段
    查看>>
    oracle 学习
    查看>>
    oracle 定义双重循环例子
    查看>>
    ORACLE 客户端工具连接oracle 12504
    查看>>
    Oracle 客户端连接时报ORA-01019错误总结
    查看>>
    oracle 导出sql数据库表结构,使用sql developer 导出Oracle数据库中的表结构
    查看>>
    oracle 嵌套表 例子,Oracle之嵌套表(了解)
    查看>>
    Oracle 常用命令
    查看>>
    Oracle 常用的V$视图脚本(二)
    查看>>
    Oracle 并行原理与示例总结
    查看>>
    oracle 并集 时间_Oracle集合运算符 交集 并集 差集
    查看>>
    Oracle 序列sequence 开始于某个值(10)执行完nextval 发现查出的值比10还小的解释
    查看>>
    ORACLE 异常错误处理
    查看>>
    oracle 执行一条查询语句,把数据加载到页面或者前台发生的事情
    查看>>
    oracle 批量生成建同义词语句和付权语句
    查看>>
    oracle 抓包工具,shell 安装oracle和pfring(抓包) 及自动环境配置
    查看>>
    Oracle 拆分以逗号分隔的字符串为多行数据
    查看>>