golang_算法: leetcode_数组08-移动零

版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/88092670
package main

import "fmt"

//遍历数据,如果一个数值不为0,提至最前,一次操作,最后把所有0补上
func moveZeroes(nums []int)  {
	no := 0
	for i := 0; i < len(nums); i++{
		if nums[i] != 0 {
			nums[no] = nums[i]
			no++
		}
	}
	for j := no; j < len(nums); j++ {
		nums[j] = 0
	}
	fmt.Println(nums)
}


//类似冒泡排序,遍历数组,碰到非0就置换到最前面,依次排列
func moveZeroes2(nums []int)  {
	k := 0
	for i := 0; i < len(nums); i++{
		if nums[i] != 0 {
			nums[i],nums[k] = nums[k],nums[i]
			k++
		}
	}
	fmt.Println(nums)
}

func main() {
	nums := []int{0,0,1,3,12}
	moveZeroes2(nums)
}

Output:

[1 0 0 3 12]
[1 3 0 0 12]
[1 3 12 0 0]
[1 3 12 0 0]

猜你喜欢

转载自blog.csdn.net/weixin_43851310/article/details/88092670