283. 移动零

一、题目原型:

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

二、题目意思剖析:

1
2
3
4
5
6
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。

三、解题思路:

遍历数组,如果发现元素=0,直接删除当前元素,在数组末尾加上0

1
2
3
4
[0,1,0,3,12]
[1,0,3,12,0]
[1,3,12,0,0]
[1,3,12,0,0]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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

坚持原创技术分享,您的支持将鼓励我继续创作!