1. 題目
2. 描述
給定一個數組
nums
,編寫一個函數將所有0
移動到數組的末尾,同時保持非零元素的相對順序。示例:
輸入:
[0,1,0,3,12]
輸出:
[1,3,12,0,0]
3. 思路
- 聲明一個
count
用於計數數組中不爲 0 的元素個數 - 然後遍歷數組,將不爲 0 的元素存入數組前
count
位 - 然後將剩下的
nums.length - count
位置爲 0 - 此時主要進行遍歷操作,時間複雜度爲 .
4. 實現
public void moveZeroes(int[] nums) {
// 計數不爲零的元素個數
int count = 0;
// 遍歷數組,將不爲 0 的存入數組前 count 位
for (int item : nums) {
if (item != 0) {
nums[count++] = item;
}
}
// 將剩下的 num.length - count 位置爲 0
for (int i = count; i < nums.length; i++) {
nums[i] = 0;
}
}