移动零算法#
给定一个整数数组 nums,将所有的 0 移动到数组的末尾,同时保持非零元素的相对顺序。
注意,必须在原地修改输入数组,不得使用额外的数组。
示例 1:
示例 2:
解法一#
实现逻辑:
首先将所有非零元素放在数组的前面,并记录非零元素的个数,然后将非零元素之后的元素置为 0。
举例如下:
代码如下:
解法二#
实现逻辑:
定义一个变量 snowballSize 表示数组中 0 的个数,遍历数组,如果当前元素是 0,则将 snowballSize 加 1,如果当前元素不为 0 且 snowballSize 大于 0,则交换当前元素和前面 snowballSize 个元素的位置。
举例如下:
代码如下: