206. 反转链表 (Swift 版本)

news/2024/7/8 15:39:38 标签: 链表, swift, 数据结构, linkedList

题目

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表

解题

swift">/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public var val: Int
 *     public var next: ListNode?
 *     public init() { self.val = 0; self.next = nil; }
 *     public init(_ val: Int) { self.val = val; self.next = nil; }
 *     public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
 * }
 */
class Solution {
    func reverseList(_ head: ListNode?) -> ListNode? {
    	// 上一个
        var previous: ListNode? = nil
        // 当前
        var current: ListNode? = head
        // 下一个
        var next: ListNode? = head?.next
        while next != nil {
            current?.next = previous
            previous = current
            current = next
            next = current?.next
        }
        // 将新节点的首个节点正确连接
        current?.next = previous
        return current
    }
}

分析

  • 时间复杂度:因为只遍历了一次,很显然是 O(n)
  • 空间复杂度:只用到了 3 个指针,所以是 O(1)

http://www.niftyadmin.cn/n/5537379.html

相关文章

云计算【第一阶段(23)】Linux系统安全及应用

一、账号安全控制 1.1、账号安全基本措施 1.1.1、系统账号清理 将非登录用户的shell设为/sbin/nologin锁定长期不使用的账号删除无用的账号 1.1.1.1、实验1 用于匹配以/sbin/nologin结尾的字符串,$ 表示行的末尾。 (一般是程序用户改为nologin&…

深度学习笔记: 最详尽解释预测系统的分类指标(精确率、召回率和 F1 值)

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家! 预测系统的分类指标(精确率、召回率和 F1 值) 简介 让我们来谈谈预测系统的分类指标以及对精确率、召回…

高效前端开发:解密pnpm的存储与链接

什么是pnpm PNPM(Performant NPM)是一种快速且节省磁盘空间的包管理工具。相较于其他包管理器如NPM和Yarn,PNPM通过独特的存储机制和链接技术解决了许多常见的问题。以下是PNPM如何避免这些问题以及其关键技术的详细介绍。 特性 PNPM Store…

手动将dingtalk-sdk-java jar包打入maven本地仓库

有时候,中央镜像库不一定有自己需要的jar包,这时候我们就需要用到该方法,将jar打入maven本地仓库,然后项目中,正常使用maven的引入规则。 mvn install:install-file -Dmaven.repo.local=D:\software\maven\apache-maven-3.6.3-bin\apache-maven-3.6.3\repo -DgroupId=ding…

VSCode中使用CMake管理

使用 CMake 配置 Visual Studio Code (VSCode) 项目是许多 C 开发者的常见需求。下面我将详细介绍在 VSCode 中使用 CMake 的步骤和最佳实践。 前提条件 安装 VSCode:如果还未安装,请先前往 VSCode 下载页面下载安装。 CMake:安装 CMake 工…

【Android源码】Gerrit上传Android源码

关于Gerrit的安装参考下面链接 【Android源码】Gerrit安装 要实现上传Android源码,需要经历以下几步: 下载Android代码创建源码仓库创建manifests仓库上传源码其他电脑下载源码 要证明Gerrit中的源码真实可用,肯定是以其他人能真正共享到代…

Linux环境下快速部署Spring Boot应用:高效命令组合实践

概要: 本文旨在介绍一种高效的Linux命令组合,用于简化Spring Boot项目的部署与管理流程。通过结合使用nohup、java -jar、输出重定向以及进程管理命令,我们能够实现Spring Boot应用的快速后台启动及便捷的进程控制,尤其适合于自动…

前端vue使用onlyoffice控件实现word在线编辑、预览(仅列出前端部分需要做的工作,不包含后端部分)

简介 ONLYOFFICE 文档 是一个开源办公套件,包括文本文档、电子表格、演示文稿和可填写表单的编辑器。 它提供以下功能: 创建、编辑和查看文本文档、电子表格、演示文稿和可填写表单; 与其他队友实时协作处理文件。 基于这个控件,…