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


相关推荐

  • 安装petalinux_怎么在Linux上搭建环境

    安装petalinux_怎么在Linux上搭建环境安装petalinux工具包和配置工作环境;·xilinx官网下载petalinux-v2017.3-final-installer.run安装包,注意:版本必须和你vivado一致; ·下载ubuntu16.4,按照ug1144安装工具包; ·建立petalinux安装目录,注意安装目录的权限必须为755且安装不能用root用户安装;$mkdir-p/opt/pkg/petal…

    2022年9月12日
    0
  • 腾讯淘宝网_新浪业务

    腾讯淘宝网_新浪业务From:http://blog.csdn.net/perfect2011/article/details/18844575

    2022年8月13日
    3
  • python求解中位数、均值、众数

    python求解中位数、均值、众数首先定义一个数据,在这里我假定为:num=[2,3,2,5,1,0,1,2,9]一、求中位数    中位数(又称中值,英语:Median),统计学中的专有名词,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个,则中位数不唯一,通常取最中间的两个数值的平均数…

    2022年9月17日
    0
  • 哈夫曼树

    哈夫曼树一、哈夫曼树的概念和定义 什么是哈夫曼树?让我们先举一个例子。判定树:       在很多问题的处理过程中,需要进行大量的条件判断,这些判断结构的设计直接影响着程序的执行效率。例如,编制一个程序,将百分制转换成五个等级输出。大家可能认为这个程序很简单,并且很快就可以用下列形式编写出来:  if(score<60) cout<<"Bad"<

    2022年6月11日
    32
  • Windows内核之进程的终止和子进程

    Windows内核之进程的终止和子进程

    2021年12月4日
    45
  • RocketMQ和Kafka应用场景与选型[通俗易懂]

    RocketMQ和Kafka应用场景与选型[通俗易懂]1、适用场景kafka适合日志处理rocketmq适合业务处理结论:两者没有区别,根据具体业务定夺2、性能kafka单机写入TPS号称在百万条/秒rocketmq大约在10万条/秒结论:追求性能方面,kafka单机性能更高3、可靠性kafka使用异步刷盘方式,异步Replicationrocketmq支持异步/同步刷盘,异步/同步Replication结论:rocketmq所支持的同步方式提升了数据的可靠性4、实时性kafka和rocketmq均支持pull长轮询,rocketmq

    2022年10月14日
    0

发表回复

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

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