fish-stack / Algo

算法相关的话题
0 stars 0 forks source link

283. 移动数组中的零 #21

Open bitfishxyz opened 5 years ago

bitfishxyz commented 5 years ago

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

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]

说明:

bitfishxyz commented 5 years ago

解析

这种题目看起来很简单,但是又有一点绕人。 其实只要把真正要做的事情给搞清楚就行了:

遍历数组,找到非零元素,然后把非零元素填补到数组的头部

其实就是这个逻辑,写起来就非常简单了。

Java实现

class Solution {
    public void moveZeroes(int[] nums) {
        // 表示已经找到的非零元素的个数
        int size = 0;

        // 遍历数组
        for (int i = 0; i < nums.length; i++) {
            // 找到非零元素
            if (nums[i] != 0) {

                // 填补到数组的头部
                int temp = nums[i];
                nums[i] = 0;
                nums[size] = temp;
                size++;
            }
        }
    }
}