2021-10-31:移动零。给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]。输出: [1,3,12,0,0]。说

2023-07-29,,

2021-10-31:移动零。给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]。输出: [1,3,12,0,0]。说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。力扣283。

答案2021-10-31:

一次遍历即可。双指针都从左往右遍历,其中一个指针遇0不右走遇1右走,另一个变量一直往右走。遇到0,两个指针的值交换。
时间复杂度:O(N)。
额外空间复杂度:O(1)。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
nums := []int{1, 3, 0, 2, 0, 4}
moveZeroes(nums)
fmt.Println(nums)
} func moveZeroes(nums []int) {
to := 0
for i := 0; i < len(nums); i++ {
if nums[i] != 0 {
nums[to], nums[i] = nums[i], nums[to]
to++
}
}
}

执行结果如下:


左神java代码

2021-10-31:移动零。给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]。输出: [1,3,12,0,0]。说的相关教程结束。

《2021-10-31:移动零。给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]。输出: [1,3,12,0,0]。说.doc》

下载本文的Word格式文档,以方便收藏与打印。