结论:原数组灵活操作
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。
自己题解:
class Solution { public void moveZeroes(int[] nums) { int offset = 0; for (int i=0; i<nums.length; i++) { if (nums[i] != 0) { nums[offset] = nums[i]; offset ++; } } for (int i=offset; i<nums.length; i++) { nums[i] = 0; } } }
分析:
1.先将非零的数移到前面,然后再将零补到最后。
一开始已经想到这个思路了,但是后面被绕走了。。