283-移动零
访问量:744

一、简介

地址:https://leetcode.com/problems/move-zeroes/

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

示例:

输入: [0,1,0,3,12]

输出: [1,3,12,0,0]

说明:

必须在原数组上操作,不能拷贝额外的数组。

尽量减少操作次数。

二、解法

1、思路:针对一个不为0的数字,如果前面有n个0,就将其往前移动n位.

func moveZeroes(nums []int) {
   var len int = len(nums)
	var zeroNums int = 0
	for i := 0; i < len; i++ {
		if nums[i] == 0 {
			zeroNums ++
		} else if zeroNums > 0{
			//第i个元素向前移动zeroNums位
			nums[i-zeroNums] = nums[i]
			nums[i] = 0
		}
	}
}