Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >漫谈递归-回文链表

漫谈递归-回文链表

作者头像
早起的鸟儿有虫吃
发布于 2019-03-06 07:35:12
发布于 2019-03-06 07:35:12
1K00
代码可运行
举报
文章被收录于专栏:算法之美算法之美
运行总次数:0
代码可运行

题目

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

测试

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

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

答案

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
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) {
         //这2个参数意义不一样一个指针,一个指针的引用
        return isPalindrome(head,head);
    }
  
    bool isPalindrome(ListNode* tail,ListNode* &head)
    {
        if(NULL==tail) 
        {
            return true;
        }       
         //从上到下不做任何原始比较,直到结束。返回true
        bool flag=isPalindrome(tail->next,head);
        if (false ==flag)
        {
            return false;

        }        //最外层比较
        if (tail->val !=head->val)
        {
            return false;
        }
        //最里层比较,head是引用,修改的指针本身
        head =head->next;
        return flag;

    }
};

分析

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

性能

因为采用递归

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Offer多多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android音视频——系统播放器介绍(三)
开发者可以设置一些监听器,监听MediaPlayer的状态,错误事件等等。开发者应在同一个线程中创建MediaPlayer与设置的监听器。
程思扬
2022/01/11
1K0
Android 音频播放速率调整实现
最近接触到的一个项目, 有音频播放、切换播放速率和拖动进度到某处播放的需求 ,由于之前只是见过并没有尝试过切换播放速率 , 于是开始调研并最终实现,下面简单记录一下这次的调研过程。
程思扬
2022/01/11
1.3K0
视频播放器倍速、清晰度切换、m3u8下载
视频上很容易就可以做到倍速播放,一般的视频格式都是每秒固定的帧数,按比例跳帧就可以了。音频上其实也可以用这种方式来直接删除一些周期,因为电脑里的音频也是数字化离散化地储存的。但是为了使声音不失真,应该都用了稍复杂一点的算法的,比方说把相邻时钟周期内的声音电平信号取平均,或者用高斯平均值代替原信号,再精细点可以自适应地在音调信号比较丰富的地方设置比较高的权重来尽量少压缩保持音色,总之有很多种方法都可以做到啦。因为没有关注过这个,所以并不知道在软件里具体是怎么实现的,但是数字信号的缩放、滤波这些算法应该都差不多是这么做的,音频的加速也不像是需要使用更复杂的非线性自适应滤波的样子。
xiangzhihong
2022/11/30
1.2K0
Android多媒体之视频播放器(基于MediaPlayer)
获取帧.png 基本上也就这么多了,最后讲一下视频封面帧图片的获取:数了一下这帧大概在15秒 测试了一下秒数越大,获取图片的速度越慢,也就是越卡,所以还是给0吧 如果在Adapter里实时加载会很卡,最好查询的时候就把bitmap放到实体类里,由于封面图不要很大 别把原图给放进去了,小心直接OOM。Bitmap的操作本文就不赘述了。
张风捷特烈
2019/03/15
5.6K0
Android多媒体之视频播放器(基于MediaPlayer)
Android MediaPlayer 播放音频
主要介绍使用MediaPlayer播放音频的方式。关于MediaPlayer的基础知识,比如状态,可以参考Android MediaPlayer 基础简介。
AnRFDev
2021/02/01
2.2K0
AVPlayer 添加音频播放功能
大家好,本文是 iOS/Android 音视频开发专题 的第八篇,该专题中 AVPlayer 项目代码将在 Github 进行托管,你可在微信公众号(GeekDev)后台回复 资料 获取项目地址。
100001509164
2019/09/29
2.1K0
Android ExoPlayer 音画同步代码分析
音画同步旨在通过时钟参考的方式,将音频、视频、歌词等播放时间对应起来,确保画面和声音同步。音视频播放器开发中,音画同步是一项非常重要的工作,直接影响用户的视听体验。
QQ音乐技术团队
2023/08/16
1.6K0
Android ExoPlayer 音画同步代码分析
05.视频播放器内核切换封装
05.视频播放器内核切换封装 目录介绍 01.视频播放器内核封装需求 02.播放器内核架构图 03.如何兼容不同内核播放器 04.看一下ijk的内核实现类 05.看一下exo的内核实现类 06.如何创建不同内核播放器 07.看一下工厂类实现代码 08.后期如何添加新的内核 00.视频播放器通用框架 基础封装视频播放器player,可以在ExoPlayer、MediaPlayer,声网RTC视频播放器内核,原生MediaPlayer可以自由切换 对于视图状态切换和后期维护拓展,避免功能和业务出现耦合。比如需要
杨充
2020/10/16
2.4K0
音视频开发之旅(45)-ExoPlayer 音频播放器实践(一)
通过上一篇的学习实践,我们了解了ExoPlayer的优缺点以及基本用法,今天我们进入ExoPlayer的音频播放实践,我们来一起实现一个简单的音频播放器。
音视频开发之旅
2021/05/29
5.5K1
音视频开发之旅(45)-ExoPlayer 音频播放器实践(一)
Android 使用URLConnection下载音频文件
使用MediaPlayer播放在线音频,请参考Android MediaPlayer 播放音频
AnRFDev
2021/02/01
9110
Android 实现视屏播放器、边播边缓存功能、外加铲屎(IJKPlayer)
Android上最为人熟知的MediaPlayer,对,就是这货,在上两篇音频文章中频频露脸的家伙,这次又有它的身影,然而还是这次不讲他,就连他的封装类VideoView也不讲<( ̄︶ ̄)>,呸呸呸,又扯了一堆没用的。
GSYTech
2018/08/22
2.8K0
Android 实现视屏播放器、边播边缓存功能、外加铲屎(IJKPlayer)
Android MediaPlayer 音乐播放器扫描 本地音乐、上一曲、下一曲切歌、播放本地音乐
项目请在真机(自己的手机)上测试运行,因为我不喜欢用虚拟机。 为了不浪费您的时间,先看一下运行的效果图, 一进去先进行音乐扫描,然后列表展示出来,点击即可播放。
晨曦_LLW
2020/09/25
3K0
使用Android MediaPlayer播放媒体文件
我们平时利用Android手机娱乐最常见的方式莫过于听歌和看电影了,当然还有玩游戏,当然,这里我要说的是针对Android对于媒体文件播放的支持。Android里面提供了MediaPlayer类来播放媒体文件,下面来看一下怎样用MediaPlayer对象来播放媒体文件: 一般来说,用MediaPlayer类来播放媒体文件有以下几个步骤:
指点
2019/01/18
2.7K0
使用Android MediaPlayer播放媒体文件
MediaPlayer(八)--start()流程
frameworks/base/media/java/android/media/MediaPlayer.java
小蚂蚁与大象
2020/04/21
1.1K0
MediaPlayer(总结)--从对象生命周期理解MediaPlayer状态
为了方便先重复贴一下MediaPlayer的状态图和MediaPlayer 的基本框架
小蚂蚁与大象
2020/04/21
1.1K0
MediaPlayer(总结)--从对象生命周期理解MediaPlayer状态
Android多媒体之认识MP3与内置媒体播放(MediaPlayer)
零、前言 作为90后,mp3格式的音乐可谓灵魂之友。 小时候带着耳机,躺在桌子上听歌看月亮心情依稀。 当某个旋律想起,还会不会浮现某个风景,某个人……, 今天全程单曲播放——梁静茹-勇气(献上
张风捷特烈
2019/02/25
2K0
Android多媒体之认识MP3与内置媒体播放(MediaPlayer)
Android MediaPlayer 播放prepareAsync called in state 8解决办法
使用android MediaPlayer播放音频文件时,有时会出现prepareasync called in state 8错误。
黄啊码
2020/05/29
1.2K0
音频开发ijkplayer小结 android
最近接触到一些音频开发的操作和一个音频开发的三方库: github:https://github.com/Bilibili/ijkplayer。 有人会问为什么使用三方库:最直接原因当然是因为系统的MediaPlayer支持格式不多或者是版本限制。具体只支持格式: http://developer.android.com/intl/zh-cn/guide/appendix/media-formats.html http://blog.csdn.net/ddna/article/details/517
用户1127566
2018/06/01
1.8K0
HarmonyOS 开发实践——基于AVPlayer的视频播放
示例场景:AVPlayer播放视频ArkTS实现,创建AVPlayer,设置播放资源和窗口,设置播放参数,播放控制(播放/暂停/跳转),重置,销毁资源,播放完成后切换视频。
小帅聊鸿蒙
2024/11/20
3330
推荐阅读
相关推荐
Android音视频——系统播放器介绍(三)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验