给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums =[0,1,0,3,12]
输出:[1,3,12,0,0]
示例 2:
输入: nums =[0]
输出:[0]
class Solution {public void moveZeroes(int[] nums) {// 去除 nums 中的所有 0// 返回去除 0 之后的数组长度int p = removeElement(nums);// 将 p 之后的所有元素赋值为 0for (; p < nums.length; p++) {nums[p] = 0;}}// 快慢指针int removeElement(int[] nums) {int fast = 0, slow = 0;while (fast < nums.length) {if (nums[fast] != 0) {nums[slow] = nums[fast];slow++;}fast++;}return slow;}
}
之前写while循环时遇到一个小问题,在c语言中while(1)没有任何问题,但是在Java里面是不可以的,Java里面一般用while(true)