1. 思路:采用双指针的方式 i j 两个指针 i专门用来遍历数组,j记录当前所有非0元素的个数,每当碰到一个非0元素就把这个非0元素挪动到j的位置。当遍历完之后 j的位置就是最后一个非0元素的所在处。
2.代码 时间复杂度O(N) 空间复杂度O(1)
class Solution {
public void moveZeroes(int[] nums) {
if(nums== null){
return;
}
int j = 0;
for(int i = 0;i<nums.length;++i){
if(nums[i]!=0) {
nums[j++] = nums[i];
}
}
for(int i =j;i<nums.length;++i){
nums[i] = 0;
}
}
}