当前位置: 首页 > news >正文

【Swift】LeetCode 283. 移动零

283. 移动零

在这里插入图片描述

题目描述

请添加图片描述

思路 and Swift 题解

这道题是经典的双指针问题,开始时需要在数组的起点声明两个指针,分别是slowfast,之后fast一直向后遍历整个数组,如果遇到nums[fast] != 0,则执行slowfast位置的元素的交换,同时slow后移一个位置。这就保证了,如果数组在开始时都不为0,那么slowfast一起向后移动(交换相同位置等于没有交换),直到遇到nums[fast]0,此时slow不再移动,指向0所在的这个位置,而fast继续后移,找到下一个不为零的元素,将其与slow位置的0进行交换。

思路很明确,我们如何用 Swift 解决这个问题呢?此处涉及到两个关键点,第一点是在 Swift 当中如何获取Collection类型的长度(数组Array就是一个Collection类型,Collection又进一步遵循Sequence协议);第二点是在 Swift 当中如何使用内置方法交换Array当中两个数值的位置。

首先,对于Collection类型,可以使用内置的count属性来获取其中存储了多少个元素。

其次,Swift 的Array内置了swapAt(_:, _:)这个方法,它的参数是两个元素的下标,用于交换指定 Index 位置的元素。另一个可以用于交换Array当中两个位置的元素的方法是swap(_:, _:),但它的用法比较复杂,并且安全性不如swapAt(_:, _:)(不能交换两个相同位置的元素,否则会报错),因此解题时我使用swapAt(_:, _:)来完成。

完整的 Swift 题解是:

class Solution {func moveZeroes(_ nums: inout [Int]) {var slow = 0, fast = 0while fast != nums.count {if nums[fast] != 0 {nums.swapAt(slow, fast)slow += 1}fast += 1}}
}
http://www.dtcms.com/a/474229.html

相关文章:

  • 【Java数据结构】冒泡排序编码关键细节与避坑指南
  • DPDK中的BitMap测试
  • 网站制作合作2023企业税收标准
  • Windchill中afterVK的写法示例
  • 《红色脉络:一部PLMN在中国的演进史诗 (1G-6G)》 第12篇 | 接入网重构:从eNodeB到gNodeB——C-RAN与“下沉”
  • so域名的网站有哪些wordpress主题恢复出厂设置
  • Maven中的settings.xml文件配置详解
  • 南昌制作企业网站湘潭网站建设 安全还踏实磐石网络
  • 我设计的数字编码
  • 从分片到可编程网卡——【网络编程】详解 IP 协议:报头字段、路由器功能、网段划分和分片传输
  • 南通网站建设排名公司哪家好北京网站建设公司电扬
  • BSW:辅助模块、校验与代码生成笔记
  • seo网站营销推广wordpress更新版本
  • 李宏毅机器学习笔记20
  • 无锡信息网站建设最近热点新闻素材
  • 开发中遇到的关于Spring事务[传播行为和隔离级别]的相关问题的记录
  • CVE-2019-2729反序列化(unserialize)漏洞学习与分析
  • 一流的句容网站建设自己做的网站找不到了
  • TDengine 数学函数 CEIL 用户手册
  • 石家庄好用的招聘网站做网站网站会被判多久
  • 北京平台网站建设代运营公司介绍
  • AI编程作品:Android 极简秒表应用
  • 网络五子棋对战游戏测试报告
  • html做网站的原则自建站排名
  • 互联网彩票网站开发珠海seo关键词排名
  • springboot095交通事故档案管理系统lgl(源码+部署说明+演示视频+源码介绍+lw)
  • 新郑郑州网站建设铭讯网站建设
  • 在next项目中使用iconfont图标方法
  • 重新定义AI编程协作:深入解析Claude Code多智能体系统架
  • 深入解析如何高效处理PDF?