给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入:[0,1,0,3,12]
输出:[1,3,12,0,0]
思路: 0 ~ j 的区域是 非零, k 扫描 遇到非零的数 就和 ++j 位置的数交换。
class Solution { public void moveZeroes(int[] nums) { int j=-1; for( int k=0; k < nums.length; ++k ){ if (nums[k] != 0) { Swap(nums, k, ++j); } } } public void Swap(int[] nums, int a, int b) { int tmp = nums[a]; nums[a] = nums[b]; nums[b] = tmp; } }