题目描述
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
- 示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/move-zeroes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
双指针,当快指针q遇到0时便移动到下一个数字,遇到非0数字时与慢指针p的数字进行交换,然后p、q均移动至下一个数字。
当然也可不用交换,记录0的个数 c,直接q覆盖p,最后 c 个数字用0覆盖。
代码详解
class Solution {
public void moveZeroes(