1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| // @Title: 移动零 (Move Zeroes)
// @Author: 15816537946@163.com
// @Date: 2019-10-08 23:40:57
// @Runtime: 88 ms
// @Memory: 7.6 MB
/*
* @lc app=leetcode.cn id=283 lang=golang
*
* [283] 移动零
*
* https://leetcode-cn.com/problems/move-zeroes/description/
*
* algorithms
* Easy (56.02%)
* Likes: 376
* Dislikes: 0
* Total Accepted: 61.9K
* Total Submissions: 110.3K
* Testcase Example: '[0,1,0,3,12]'
*
* 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
*
* 示例:
*
* 输入: [0,1,0,3,12]
* 输出: [1,3,12,0,0]
*
* 说明:
*
*
* 必须在原数组上操作,不能拷贝额外的数组。
* 尽量减少操作次数。
*
*
*/
func moveZeroes(nums []int) {
if len(nums) == 0 {
return
}
ret := make([]int, 0)
var cnt int
for _, v := range nums {
if v == 0 {
cnt++
} else {
ret = append(ret, v)
}
}
// 添加0
for cnt > 0 {
ret = append(ret, 0)
cnt--
}
// 拷贝ret数组到原数组
for i := range ret {
nums[i] = ret[i]
}
}
|