題目要求
算法思想:
class Solution {
// public void moveZeroes(int[] nums) {
// //快慢指針,時間O(n),空間O(1)
// if(nums.length == 0 || nums == null)
// return;
// int slow = 0;
// for(int fast = 0; fast < nums.length; fast++){
// if(nums[fast] != 0){
// //相等時不交換,減少交換次數
// if(slow != fast){
// int tmp = nums[fast];
// nums[fast] = nums[slow];
// nums[slow] = tmp;
// }
// //操作完快指針指向的目前元素,慢支針+1
// slow++;
// }
// }
// }
public void moveZeroes(int[] nums) {
if(nums.length == 0 || nums == null)
return;
int slow = 0;
for(int fast = 0; fast < nums.length; fast++){
if(nums[fast] != 0){
//相等時不指派,減少操作次數。
if(slow != fast){
nums[slow] = nums[fast];
}
//操作完快指針指向的目前元素,慢指針+1
slow++;
}
}
//将slow指向的後續的數組元素指派為0(slow後面的元素已經被移動到前面)
for(int i = slow; i < nums.length; i++){
nums[i] = 0;
}
}
}