翻转ListNode「建议收藏」

翻转链表复制代码链表定义publicclassListNode{publicvarval:Intpublicvarnext:ListNode?publicinit(_val:Int){self.val=valself.next=nil}}复制代码extension方便测试观察e…

大家好,又见面了,我是你们的朋友全栈君。

翻转链表
复制代码

链表定义

public class ListNode {
    public var val: Int
    public var next: ListNode?
    public init(_ val: Int) {
        self.val = val
        self.next = nil
    }
}

复制代码

extension方便测试观察

extension ListNode: CustomDebugStringConvertible, CustomStringConvertible{
    public var description: String{
        var items:[Int] = [Int]()
        
        var tmp: ListNode? = self
        while tmp != nil {
            items.append(tmp!.val)
            tmp = tmp!.next
        }
        
        return "\(items)"
    }
    public var debugDescription: String{
        return "debug:\(description)"
    }
}
extension Array {
    var listNode: ListNode?{
        var node: ListNode?
        var tmp: ListNode?
        for item in self as! [Int] {
            if node == nil {
                node = ListNode.init(item)
                tmp = node
            }else{
                tmp!.next = ListNode.init(item)
                tmp = tmp?.next
            }
        }
        return node
    }
}
复制代码

翻转二叉树

func reverseListNode(_ listNode: ListNode?)->ListNode?{
    let tmpListNode = listNode
    if tmpListNode == nil {
        return listNode
    }else{
        var currentNode = tmpListNode
        var nextNode = tmpListNode?.next
        currentNode?.next = nil
        while nextNode != nil {
            let  tmp = nextNode?.next
            nextNode?.next = currentNode
            currentNode = nextNode
            nextNode = tmp
        }
         return currentNode
    }
}
复制代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126361.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Windows下cmd中Tree命令的使用[通俗易懂]

    Windows下cmd中Tree命令的使用[通俗易懂]经常会见到项目组织的树形结构:├──images│└──scottsdale│├──IMG_1786-2.jpg│├──IMG_1787-2.jpg│└──IMG_1788-2.jpg├──image_stitching.py├──image_stitching_simple.py└──output.png2directories,6files那么它是如何生成的呢?使用的是tree命令打开cmd,跳转到某一磁盘,

  • MySQL 修改字段类型或长度

    MySQL 修改字段类型或长度mysql>altertable表名modifycolumn字段名类型;例如数据库中address表city字段是varchar(30)修改类型可以用(谨慎修改类型,可能会导致原有数据出错)mysql> altertableaddressmodifycolumncitychar(30);修改长度可以用(修改长度,要保证不短与已有数据,以保证原有数

  • 语音合成综述

    语音合成综述title:语音合成综述tags:新建,模板,小书匠grammar_cjkRuby:true语音相关基础知识点:时域信号:一维原始信号傅里叶变换:得到频域特征短时傅里叶变换:傅里叶变换得到了频域信号,但是丢失了时域信号,所欲通过STFT得到时频信号梅尔频谱倒谱系数:单单频率信号表达不足,为了更加和人的耳朵听觉相符,我们使用了mel窗滤波,得到人耳的频率段幅度系数梅尔声谱…

  • 移植FreeRTOS到ATmega128单片机

    移植FreeRTOS到ATmega128单片机

  • having 用法

    having 用法SELECTfee.bank_code,COUNT(1)cFROMt_fp_feefeeWHEREfee.fcd>=DATE’2019-6-13’GROUPBYfee.bank_codeHAVINGCOUNT(1)>=1000注意COUNT(1)不能改为C,不能使用别名…

  • lc5找回windows账户信息

    lc5找回windows账户信息  示例:利用lc5获取winserver2003的账户信息。  1. 安装lc5。百度搜索lc5下载安装包,并将lc5安装到winserver2003虚拟机上。  2. 可以用一下命令创建几个待测试的账号    命令行:netusernamepassword/add创建用户           netusername…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号