LeetCode:移动零【283】
题目描述
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入:[0,1,0,3,12]
输出:[1,3,12,0,0]
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
题目分析
黑色指针表示循环过程,即从头到尾。蓝色指针表示要填的第N个数。
黑色指针一直走,遇到非0的就将它填到N位置(初始为0,每次填写后递增)。然后如果黑色指针到达末尾,蓝色指针后面的都变更为0.
Java题解
public class Solution { public void moveZeroes(int[] nums) { int index=0; for(int i=0;i<nums.length;i++) { if(nums[i]!=0) nums[index++]=nums[i]; } while(index<nums.length) nums[index++]=0; } }