Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements.
For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].
Note:
1.You must do this in-place without making a copy of the array.
2.Minimize the total number of operations.
思路很简单,因为不能再申请其他的空间来存储结果,所以运用两个指针i和pos,并都初始化为0,i用来遍历数组nums,如果nums[i]不为0,那么都就将他赋值给nums[pos],pos再自加1。i遍历完了之后,pos前面的数就全是不等于的0的,那么在pos以及pos后面的数赋为0就行了。
public class Solution {
public void moveZeroes(int[] nums) {
int i=0;
int pos=0;
for(;i<nums.length;i++){
if(nums[i]!=0){ nums[pos++]=nums[i];}
}
while(pos<nums.length){
nums[pos++]=0;
}
}
}