翻转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
    }
}
复制代码

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python和pycharm以及anaconda的安装顺序_症证病三者之间区别

    python和pycharm以及anaconda的安装顺序_症证病三者之间区别1、致欢迎词我将详细讲述在学Python初期的各种手忙脚乱的问题的解决,通过这些步骤的操作,让你的注意力集中在Python的语法上以及后面利用Python所解决的项目问题上。而我自己作为小白,很不幸的没有错过任何的坑,都跳了进去,所以在这里写下经验贴,一方面希望能给后来的学者能够高效的避开这些坑,另一方面也算是自己的总结与警告。2、内容大纲2.1安装顺序能够使用Python的安装…

    2022年8月28日
    2
  • Ehcache 入门详解 (转)[通俗易懂]

    Ehcache 入门详解 (转)[通俗易懂]一:目录EhCache简介HelloWorld示例Spring整合二:简介2.1、基本介绍EhCache是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hiberna

    2022年7月1日
    46
  • nginx和apache、lvs区别

    nginx和apache、lvs区别对比项apachenginx简介配置简洁。负载均衡服务器,支持7层负载均衡内存及资源占用多轻量级,同样的web服务占用少稳定性超稳定不稳定,bug多进程同步进程模型异步进程模型(抗并发)处理静态文件性能好(3倍以上)性能差对PHP支持简单需要配合其他后端用rewrite功能性能好(rewrite频繁时用apache)性能差结合机制后端apache集群前端nginx抗并发Nginx轻量级,采…

    2022年6月14日
    28
  • nginx配置默认跳转页面_nginx反向代理url二次跳转

    nginx配置默认跳转页面_nginx反向代理url二次跳转1,先贴配置内容http{includemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;upstreamcms{server127.0.0.1:8081;…

    2025年10月1日
    3
  • <noscript>元素[通俗易懂]

    <noscript>元素[通俗易懂]早期浏览器都面临一个特殊的问题,即当浏览器不支持JavaScript时如何让页面平稳地退化。对这 个问题的最终解决方案就是创造一个<noscript>元素,用以在不支持JavaScript的浏览器中显示替代 的内容。这个元素可以包含能够出现在文档<body>中的任何HTML元素——<script>元素除外。包含 在<noscript&gt…

    2025年6月10日
    5
  • navicat连接oracle数据库失败_mysql数据库连接失败

    navicat连接oracle数据库失败_mysql数据库连接失败1、Navicat连接数据库失败,可能与密码、权限有关。报警内容:1251-Clientdoesnotsupportauthenticationprotocolrequestedbyserver;considerupgradingMySQLclient。解决办法:mysql-uroot-p,打开数据库,输入如下两条命令,问题解决。ALTERUSER’root’@’localhost’IDENTIFIEDWITHmysql_native_passwordBY’密码’;

    2022年10月10日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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