题目描述
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
|
|
示例 2:
|
|
提示:
1 <= nums.length <= 104
-231 <= nums[i] <= 231 - 1
进阶: 你能尽量减少完成的操作次数吗?
解题过程
思路
这道题目与删除有序数组中的重复项的思路类似。
定义两个数组下标fast
,slow
,
用fast
来遍历数组,当fast
不为0时,替换两个下标对应的值,然后slow
自增。
这样就能实现题目的要求。
代码实现
C
|
|
Java(与上面类似)
不再赘述。