- 必须在原数组上操作,不能用额外的数组
- 输入:[0,1,0,3,12] 输出:[1,3,12,0,0]
js版本
let arr = [0, 1, 0, 3, 12]
console.log(move_zeroes(arr)) // [ 1, 3, 12, 0, 0 ]
function move_zeroes(arr) {
let j = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
arr[j] = arr[i]
j++
}
}
for (let i = j; i < arr.length; i++) {
arr[i] = 0
}
return arr
}
go 版本
package main
import "fmt"
func main() {
arr := [...]int{0, 1, 0, 3, 12}
fmt.Println(move_zeroes(arr))
}
func move_zeroes(arr [5]int) [5]int {
var j = 0
for i := 0; i < len(arr); i++ {
if arr[i] != 0 {
arr[j] = arr[i]
j++
}
}
for i := j; i < len(arr); i++ {
arr[i] = 0
}
return arr
}
rust版本
pub fn num1() {
// 给定一个数组,编写一个函数,把所有0移到末尾,同时保证非0值的相对位置
// 必须在原数组上操作,不能用额外的数组
// 输入:[0,1,0,3,12] 输出:[1,3,12,0,0]
let mut vec = vec![0, 1, 0, 3, 12];
move_zeroes(&mut vec);
}
fn move_zeroes(num: &mut Vec<i32>) {
println!("{:?}----前-----", num);
let mut j = 0;
for i in 0..num.len() {
println!("{}", num[i]);
if num[i] != 0 {
num[j] = num[i];
j += 1
}
}
for i in j..num.len() {
num[i] = 0
}
println!("{:?}----后-----", num);
}
发表评论