跳至主要內容

把数组中的0移动到末尾


把数组中的0移动到末尾

题目

给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。

示例1:

输入:[0, 1, 0, 3, 12]
输出:[1, 3, 12, 0, 0]
解释:元素0移动到了末尾,且非零元素保持原有顺序不变

解答1:

class Solution {
    public void moveZeroes(int[] nums) {
        int n = nums.length, left = 0, right = 0;
        while (right < n) {
            if (nums[right] != 0) {
                nums[left]=nums[right];
                left++;
            }
            right++;
        }
        //非0元素统计完了,剩下的都是0了
        //所以第二次遍历把末尾的元素都赋0即可
        for(int i=left;i<nums.length;i++){
            nums[i]=0;
        }
    }  
}
上次编辑于:
贡献者: Neil