LeetCode反转链表Swift 面试

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

 

思路:双指针迭代

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

 

复制代码
    func reverseList(_ head: ListNode?) -> ListNode? {
        var old = head//旧链表
        var new: ListNode? = nil//新链表
        var temp: ListNode? = nil//临时结点
        while old != nil {
            //对原链表做头删操作
            temp = old
            old = old?.next
            //对新链表做头插操作
            temp?.next = new
            new = temp
        }
        return new
    }
复制代码

 

 

借鉴:https://blog.csdn.net/qq_42351880/article/details/88637387

posted @   黄增松  阅读(151)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示