题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序
示例:
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数
方法一:两次遍历
class Solution {public void moveZeroes(int[] nums) {int count&#61;0, n &#61; nums.length,i&#61;0;while (i < n) {if(nums[i]&#61;&#61;0) {count&#43;&#43;;i&#43;&#43;;}elsenums[i-count]&#61;nums[i&#43;&#43;];}for(int j&#61;0;j<count;j&#43;&#43;)nums[n-count&#43;j]&#61;0;}
}
方法二&#xff1a;一次遍历
class Solution {public void moveZeroes(int[] nums) {if(nums&#61;&#61;null) {return;}int j &#61; 0;for(int i&#61;0;i<nums.length;i&#43;&#43;) {if(nums[i]!&#61;0) {int tmp &#61; nums[i];nums[i] &#61; nums[j];nums[j&#43;&#43;] &#61; tmp;}}}
}