283. 移动零 (Swift版本)

题目描述

在这里插入图片描述


最容易想到的解法

从后向前遍历, 发现0就通过交换相邻元素将0移动到最后

class Solution {func moveZeroes(_ nums: inout [Int]) {for index in (0..<nums.count).reversed() {if nums[index] == 0 {moveZeroes(&nums, index)}}}func moveZeroes(_ nums: inout [Int], _ index: Int) {var current = indexwhile current < nums.count - 1 {nums.swapAt(current, current + 1)current += 1}}
}

最优解 - 双指针

左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。

class Solution {func moveZeroes(_ nums: inout [Int]) {let length = nums.countvar left = 0, right = 0while right < length {if nums[right] != 0 {nums.swapAt(left, right)left += 1}right += 1}}
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/852231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多城市多门店会员营销管理系统介绍演示

阿基米德多城市多门店会员卡营销管理系统&#xff0c;采用Thinkphp8.0vue3.0uniapp技术栈开发&#xff0c;前后端分离&#xff0c;客户端支持小程序、H5、APP一键打包&#xff0c;功能完善、成熟稳定&#xff0c;使用简单易上手&#xff0c;是一套可以直接商业化运营的好系统&a…

安装和使用TrinityCore NPCBot

安装TrinityCore NPCBot 官网&#xff1a;GitHub - trickerer/Trinity-Bots: NPCBots for TrinityCore and AzerothCore 3.3.5 基本安装方法 Follow TrinityCore Installation Guide (https://TrinityCore.info/) to install the server firstDownload NPCBots.patch and put …

为什么 JavaScript 在国外逐渐用于前端+后端开发

这个问题其实没人能给出可证伪的结论&#xff0c;那不如干脆给一个感性的答案: 因为阿里“不争气”。 确切的说&#xff0c;因为阿里的nodejs团队没卷赢&#xff0c;至少暂时还没卷赢&#xff0c;没拿到真正有价值的业务场景&#xff0c;做出真正有说服力的案例项目。刚好我有…

Qt调用第三方库的通用方式(静态链接库.a或.lib、动态链接库.dll)

目录 一、前提 二、如何引用静态链接库 三、如何引用动态链接库 四、示例代码资源 在开发项目中经常会存在需要调用第三方库的时候&#xff0c;对于Qt如何来调用第三方库&#xff0c;为了方便自己特意记录下详细过程。 一、前提 1. window 10操作系统 2. 已安装了Qt6.7.…

现代C++编程:C++ 17新特性个人总结

构造函数模板推导 它允许编译器推导类模板的参数类型&#xff0c;无需程序员显式指定。这带来了编写模板代码时的便利性&#xff0c;使得代码更加简洁。在此之前&#xff0c;创建模板类的对象时必须显式指定模板参数&#xff0c;即使这些参数可以从构造函数的参数中推导出来。…

leetcode415:字符串相加

题目链接&#xff1a; class Solution { public:string addStrings(string num1, string num2) {int num1len num1.size() - 1, num2len num2.size() - 1;int add 0;string ans "";while(num1len > 0 || num2len > 0 || add ! 0){int x num1len > 0 ?…

水帘降温水温

不同环境下的水帘啊&#xff0c;使用水温是不一样的&#xff0c;夏天使用水疗的水有两种&#xff0c;一个是常温的循环水&#xff0c;20~26左右&#xff0c;另外一个呢&#xff0c;就是深井水&#xff0c;重点是啥呢&#xff1f;就是无论我们用哪一种&#xff0c;能够把温度降到…

spark与flink的wordcount示例

spark的wordcount示例: package sparkimport org.apache.spark._object TestSparkWordCount {def main(args: Array[String]): Unit {val sc new SparkContext(new SparkConf().setAppName("wordcount").setMaster("local[*]")) // hello scala // …

【Java数据结构】优先级队列详解(二)

&#x1f512;文章目录&#xff1a; 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.PriorityQueue的特性 3.优先级队列的构造 4.如何控制优先级队列是小堆还是大堆 5.PriorityQueue的方法 6. PriorityQueue的自动扩容方式 7.top-k问题——最小…

6.13作业

自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口标题this->setWindowTitle("QQ");//设置窗口图标this->setWindowIcon(QIcon("C:/Users/…

鸿蒙轻内核A核源码分析系列七 进程管理 (1)

本文开始继续分析OpenHarmony LiteOS-A内核的源代码&#xff0c;接下来会分析进程和任务管理模块。本文中所涉及的源码&#xff0c;以OpenHarmony LiteOS-A内核为例&#xff0c;均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_a 获取。如果涉及开发板&#xff…

【一个 Android 反编译神器jadx】

是的&#xff0c;JADX 是一个广泛使用的开源工具&#xff0c;用于将 Android 的 APK 文件反编译为可读的 Java 源代码。它在 Android 逆向工程和调试中非常有用&#xff0c;可以帮助开发者和安全研究人员分析应用程序的内部工作原理。 简介 JADX&#xff1a;一个使用 Java 编…

spring中IOC容器创建流程

跳转参考地址&#xff1a;https://wuliqun.cn/details?pps53

【安装笔记-20240613-Linux-在 OpenWrt 的 LuCI界面支持命令行调试】

安装笔记-系列文章目录 安装笔记-20240613-Linux-在 OpenWrt 的 LuCI界面支持命令行调试 文章目录 安装笔记-系列文章目录安装笔记-20240613-Linux-在 OpenWrt 的 LuCI界面支持命令行调试 前言一、软件介绍名称&#xff1a;ttyd主页官方介绍特点 二、安装步骤测试版本&#xf…

两种典型的嵌入式系统架构模式

大多数嵌入式系统都具备实时特征&#xff0c;那么&#xff0c;这种嵌入式系统的典型架构可概括为两种模式&#xff0c;即层次化模式架构和递归模式架构。 1.层次化模式架构 为了达到概念一致性&#xff0c;许多系统通过层次化的方法进行搭建。这样做的结果是&#xff1a;位于高…

Docker与低代码跨平台开发:实现高效跨平台开发的新范式

在当今快节奏的软件开发领域&#xff0c;开发者们正在寻找更高效、更灵活的开发方式来满足不断增长的需求。Docker和低代码开发技术是两个备受关注的领域&#xff0c;它们为开发人员提供了极大的便利和效率。本文将探讨如何结合Docker和低代码技术&#xff0c;实现跨平台开发的…

Chisel入门——在windows系统下部署Chisel环境并点亮FPGA小灯等实验

Chisel入门——在windows系统下部署Chisel环境并点亮FPGA小灯等实验 一、chisel简介二、vscode搭建scala开发环境2.1 安装Scala官方插件2.2 java版本&#xff08;本人用的是jdk18&#xff09;2.3 下载Scala Windows版本的二进制文件2.4 配置环境变量2.5 scala测试2.6 vscode运行…

axure制作菜单下拉、隐藏、点击选中效果

在高保真原型中&#xff0c;制作导航栏菜单时&#xff0c;需要达到点击下拉按钮&#xff0c;子菜单自动弹出&#xff0c;点击其中一个子菜单项可栏目变为选中状态且跳转到对应的子页面。制作材料可以从antdesign中去下载&#xff0c;以下述网络配置菜单为例。在箭头处添加互动效…

【DPDK学习路径】六、申请缓冲区内存池

节5中展示了如何使用DPDK提供的运行时接口创建线程并绑定核心&#xff0c;创建线程是为了执行确定的任务&#xff0c;对于DPDK而言&#xff0c;最重要的任务就是处理网卡接收到的数据包报文。 Linux 内核协议栈与网卡之间的工作是非常经典的生产者-消费者模型&#xff0c;在接收…

使用Kotlin编写一个Http服务器

首发于Enaium的个人博客 引言 在本文中&#xff0c;我们将使用 Kotlin 编写一个简单的 HTTP 服务器。我们将使用 Java 的 ServerSocket 类来实现这个服务器。我们将创建一个简单的服务器&#xff0c;它将监听端口 8000&#xff0c;并在接收到请求时返回一个简单的响应。 Http…