翻转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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 时滞模型的matlab编程_adams多体动力学仿真视频

    时滞模型的matlab编程_adams多体动力学仿真视频Matlab仿真含时滞多智体一致性分析,附代码系统结构如下图所示:clear;clc;%2014_多智能体网络的一致性问题研究_纪良浩%此为Paper中的示例代码%例2.1:A=[0,0,0.1,0,0;0.1,0,0,0,0;0,0.15,0,0,0;0,0.25,0,0,0;0.2,0,0,0,0;];D=[0,0,0,0,0;

    2022年10月1日
    1
  • Linux下的双网卡绑定bond0 em1 em2

    一、什么是bonding Linuxbonding驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余 二、bonding应用方向1、网络负载均衡 对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如NFS或SAMBA文件服

    2022年4月8日
    105
  • [深度学习 – 实战项目] 行为识别——基于骨架提取/人体关键点估计的行为识别

    [深度学习 – 实战项目] 行为识别——基于骨架提取/人体关键点估计的行为识别行为识别——骨架提取/人体关键点估计我们可以通过深度学习,检测到一个人,但是那个人在做什么我们不知道。所以我们就想让神经网络既检测到人,又知道他在做什么。也就是对这个人的行为进行识别。一个人的行为可以有很多种,可以跑、跳、走、跌倒、打架……有一些我们可以看第一眼就知道他在干嘛,有些我们必须看一段才知道他在干嘛。所以我们要用神经网络来识别行为,就可以分成单帧图片的识别和连续帧图片的识别。如果是单帧图片的识别,例如举手、摆个姿势……等简单的动作,我们可以直接用卷积网络、或者直接用yolo进行训练。在数据集

    2022年6月21日
    51
  • 在Ubuntu中安装pycharm社区版[通俗易懂]

    在Ubuntu中安装pycharm社区版[通俗易懂]版本Ubuntu20LTS

    2022年8月30日
    2
  • 快速提升网站排名_使用快排优化的方法「建议收藏」

      确定自己网站适不适合做快排  好多小伙伴想为自己网站做一做快排,但是又不知道自己网站适不适合,首先,大家都知道选好关键词的重要性,想实现投入和产出的最大化,建设网站前选好合适的关键词是非常必要的。找到网站合适的关键词,根据难度将关键词进行分类,布局对应的页面,核心关键词布局到首页,常用关键词分布列表页或栏目页,长尾关键词则主要出现在内容页。良好的网站结构是这整个网站构建的核心体系。一个良好的网站框架能让排名效果事半功倍,想要被搜索引擎快速收录的前提是可以让蜘蛛排名与抓取,而蜘蛛喜欢得是目录层次简单

    2022年4月15日
    51
  • latex大括号公式编辑「建议收藏」

    latex大括号公式编辑「建议收藏」公式最近,在使用latex编辑论文的过程中,遇到如下类似的公式:可以看到,这个公式下面使用的括号型公式。在latex中可使用如下的方式产生:\begin{equation}\label{eqn11}%%\label\begin{aligned}f_{k}^{-d,n}\left(x_{dn}=w\right)&=\frac{\int_{\phi_{k…

    2022年10月11日
    2

发表回复

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

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