博客
关于我
链表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/

    你可能感兴趣的文章
    nodejs libararies
    查看>>
    nodejs 运行CMD命令
    查看>>
    nodejs-mime类型
    查看>>
    nodejs中Express 路由统一设置缓存的小技巧
    查看>>
    nodejs图片转换字节保存
    查看>>
    NodeJs学习笔记001--npm换源
    查看>>
    nodejs配置express服务器,运行自动打开浏览器
    查看>>
    Node入门之创建第一个HelloNode
    查看>>
    Node出错导致运行崩溃的解决方案
    查看>>
    Node提示:error code Z_BUF_ERROR,error error -5,error zlib:unexpected end of file
    查看>>
    NOIp2005 过河
    查看>>
    NOPI读取Excel
    查看>>
    NoSQL&MongoDB
    查看>>
    NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
    查看>>
    npm install报错,证书验证失败unable to get local issuer certificate
    查看>>
    npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
    查看>>
    npm run build报Cannot find module错误的解决方法
    查看>>
    npm run build部署到云服务器中的Nginx(图文配置)
    查看>>
    npm start运行了什么
    查看>>
    npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
    查看>>