美文网首页
漫谈递归-回文链表

漫谈递归-回文链表

作者: 小王同学加油 | 来源:发表于2019-01-30 16:36 被阅读11次

题目

234. 回文链表
请判断一个链表是否为回文链表。

测试

示例 1:
输入: 1->2
输出: false

示例 2:
输入: 1->2->2->1
输出: true

答案

/**
1  定义2个指针,head tail 
2. 递归遍历tail链表
3. 通过
     head++  链表前进, 递归特点:从上到下 
             这个是子递归完在函数内部修改的,然后当前递归在使用
             head已经发生改变)
     tail --     链表倒退,  
                 递归特点 回溯,利用函数栈跟踪轨获取最后节点。
                 tail没有改变
   判断是否回文 tail ==head
4.如果是继续,如果不是返回false
//执行用时: 20 ms, 在Palindrome Linked List的C++提交中击败了42.09% 的用户
**/
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        
        return isPalindrome(head,head);
    }
    //bool isPalindrome(ListNode* tail,ListNode* head)
    bool isPalindrome(ListNode* tail,ListNode* &head)
    {
        if(NULL==tail) 
        {
            return true;
        }
        
        bool flag=isPalindrome(tail->next,head);
        if (false ==flag)
        {
            return false;
            
        }
        
        if (tail->val !=head->val)
        {
            return false;
        }
        head =head->next;//
        return flag;
        
    }
};

分析

  1. 什么是回文:


    image.png
    image.png
image.png
  1. 这就是递归 recursion(head)
  2. 链表 每个节点都是相同的结构 符合递归的特点
    链表顺序遍历,这个规律无法违背?
  3. 递归特点之一 回溯 实现链表倒序遍历

性能

因为采用递归

执行用时: 20 ms, 在Palindrome Linked List的C++提交中击败了42.09% 的用户

空间: o(n)
时间:o(n)

相关阅读

链表排序

相关文章

  • 漫谈递归-回文链表

    题目 234. 回文链表请判断一个链表是否为回文链表。 测试 示例 1:输入: 1->2输出: false 示例 ...

  • Algorithm小白入门 -- 单链表

    单链表递归反转链表k个一组反转链表回文链表 1. 递归反转链表 单链表节点的结构如下: 1.1 递归反转整个单链表...

  • 【日拱一卒】链表——回文判断

    需求 判断一个链表是否是回文链表 回文的形式大家应该都知道,类似 这种对称的方式都是回文。 难点 如果将链表形式换...

  • LeetCode 234. 回文链表

    234. 回文链表 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2输出: false 示例 2: 输...

  • 02-14:leetcode重刷8之哈希与数组

    链表: 判断链表是否环形、是否回文 1、是否链表 #Definitionforsingly-linkedlist....

  • 链表的操作和算法相关

    github->demo1、创建(单链表、双链表、循环链表)2、翻转单链表(递归和非递归)3、判断链表是否存在环。...

  • 链表反转

    循环反转链表 递归反转链表

  • 2019-02-19 Day 45 待提高

    1.回文链表请判断一个链表是否为回文链表。 示例 1: 输入: 1->2输出: false示例 2: 输入: 1-...

  • 单链表反转

    单链表 单链表反转 递归方法

  • 反转链表(java实现)

    链表反转 节点数据结构如下: 链表反转的两种方式:递归和非递归 递归方式如下: 非递归方式如下:

网友评论

      本文标题:漫谈递归-回文链表

      本文链接:https://www.haomeiwen.com/subject/yxefsqtx.html