283. Move Zeroes(数组篇)

//Java方法一
class Solution {
	public void moveZeroes(int[] nums) {
		if(nums==null) {
			return;//表示没有输出
		}
		//定义两个指针i,j
		//j用来记录每个0的位置
		int j = 0;
		//遍历整个数组
		for(int i=0;i<nums.length;i++) {
		//如果当前值不为0
			if(nums[i]!=0) {
				int temp = nums[i];//定义新变量temp存储当前非零值
				nums[i] = nums[j];//把j位的0与当前值互换
				nums[j++] = temp;//将非零值赋格给当前j指针指向的位置,j指针后移
			}
            continue;
		}
	}
}	
//Java方法二
class Solution {
    public void moveZeroes(int[] nums) {
        int len=0;//记录非零数的个数
        for(int num : nums){//遍历整个数组
            if(num != 0){//如果当前值非0
                nums[len++] = num;//非0数num连续赋值
            }
            continue;
        }
        //len最后表示非0数的个数
        //剩下的数都用0填满
        while(len<nums.length){
            nums[len++]=0;
        }
    }
}

你可能感兴趣的:(Leetcode)