一、题目原型:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
二、题目意思剖析:
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
三、解题思路:
遍历数组,如果发现元素=0,直接删除当前元素,在数组末尾加上0
[0,1,0,3,12]
[1,0,3,12,0]
[1,3,12,0,0]
[1,3,12,0,0]
func moveZeroes(_ nums: inout [Int]) {
if nums.count == 1 {
return
}
var i: Int = 0
var j: Int = 0
let n: Int = nums.count
while i<n && j<n {
if nums[i] == 0 {
print("\(i)开始\(nums)")
nums.remove(at: i)
print("\(i)删除\(nums)")
nums.append(0)
print("\(i)添加\(nums)")
}else {
i = i + 1
}
j = j + 1
}
}
四、小结
耗时32
毫秒,超过59.06%
的提交记录,总提交数21
。