当前位置: 首页 > article >正文

leetcode 回文链表

题目

给定一个链表的 头节点 head ,请判断其是否为回文链表。
如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。

示例1

在这里插入图片描述

输入: head = [1,2,3,3,2,1]
输出: true>

示例2
在这里插入图片描述

输入: head = [1,2]
输出: false

提示:

链表 L 的长度范围为 [1, 105]
0 <= node.val <= 9

进阶:能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/aMhZSa
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解思路

  • 递归调用,首先判断当前节点是否为空,不为空说明还有节点,遍历后面的节点,一直到最后的节点为空之后,直接返回true
  • 返回之后,在if条件语句判断是!true 就是不执行语句,也就是当前的节点是最后的节点,那么继续判断链表表头指针指向的值 是否与当前末尾指针指向的值是否相等,如果不相等,返回false,跳出循环,如果相等,那么链表首指针往后移动,递归返回上一层,也就相当于尾指针往前移动一位。

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
    ListNode *front_point;
public:
   bool recursivelyCheck(ListNode *currentNode)
   {
       if(currentNode!=nullptr)
       {
           if(!recursivelyCheck(currentNode->next))
           {
               return false;
           }
           if(currentNode->val != front_point->val)
           {
               return false;
           }
           front_point = front_point->next;
       }
       return true;
   }
    bool isPalindrome(ListNode* head) {
        front_point = head;
        return recursivelyCheck(head);
    }
};

http://www.kler.cn/a/3274.html

相关文章:

  • 深入MapReduce——引入
  • React 前端框架实战教程
  • Coze插件开发之基于已有服务创建并上架到扣子商店
  • 攻防世界bad_python
  • 如何在data.table中处理缺失值
  • 積分方程與簡單的泛函分析8.具連續對稱核的非齊次第II類弗雷德霍姆積分算子方程
  • 【多线程】常见的锁策略
  • 【CE进阶】lua脚本使用
  • 网站性能优化篇
  • asio(八)、异步TCP服务器
  • Sass(Scss)学习
  • java 多线程,线程池
  • Python用湖南天气详情数据(可惜没雨),进行简单的可视化分析
  • Mybatis(四):自定义映射resultMap
  • 入侵检测——如何实现反弹shell检测?
  • 会声会影2023专业旗舰版新功能介绍
  • Linux - 进程概念
  • 机器学习----线性回归
  • 第十四届蓝桥杯三月真题刷题训练——第 22 天
  • ChatGPT 有哪些神奇的使用方式?
  • 【Vue2从入门到精通】详解Vue.js的15种常用指令及其使用场景
  • 设计循环队列(图示超详解哦)
  • 计网之HTTP协议和Fiddler的使用
  • C++之模拟实现string
  • “两会”网络安全相关建议提案回顾
  • 集合之HashMap 1.7总结