題目描述
給定一個數組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);
}
}
return arr;
}