欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 283. 移动零 (Swift版本)

283. 移动零 (Swift版本)

2025/10/20 7:01:16 来源:https://blog.csdn.net/qfeung/article/details/139650838  浏览:    关键词: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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词