解法1:
遍历数组,将所有的非零元素加入list中,将list中的内容复制给数组,然后其余添加0。
class Solution {
public void moveZeroes(int[] nums) {
List<Integer> nonZeroElement=new ArrayList<Integer>();
for(int i=0;i<nums.length;i++)
if(nums[i]!=0)
nonZeroElement.add(nums[i]);
for(int i=0;i<nonZeroElement.size();i++)
nums[i]=nonZeroElement.get(i);
for(int i=nonZeroElement.size();i<nums.length;i++)
nums[i]=0;
}
}
解法2:
用k保存非零元素的指针。
class Solution {
public void moveZeroes(int[] nums) {
//用k来保存非零元素的指针
int k=0;
for(int i=0;i<nums.length;i++){
//如果是非零元素,就把它放到k位置,然后k++
if(nums[i]!=0)
{
nums[k]=nums[i];
k++;
}
}
//剩下的元素补0
for(;k<nums.length;k++)
nums[k]=0;
}
}