题目描述
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。
Example:
Input: [0, 1, 0, 3, 12]
Output: [1, 3, 12, 0, 0]
要求:
- 不能创建一个新的数组来做操作
- 尽量少的操作次数
思路分析
我们用js来编写这个函数。要求在原数组上操作,可能我们最先想到的是交换元素位置,但是js的数组提供了很多好用的方法,可以直接拿来用;尽量少的操作次数,要求我们在寻0的时候倒序遍历。
简单来说,就是从后往前找0,每当找到一个0,就将其从数组中删除,并向数组的尾部插入一个0。
js代码
function moveZeroes(arr) {
for(let i = arr.length - 1; i >= 0; i--){
if(arr[i] === 0){
arr.splice(i, 1);
arr.push(0);
}
}
}