移动零(java)
来自于LeetCode算法题(java)
移动零
给定一个数组 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) { int n = nums.length, left = 0, right = 0; //必须在不复制数组的情况下原地对数组进行操作。 while (right < n) { //进入循环的条件 if (nums[right] != 0) { //如果nums数组中下标为right的不等于0,进入判断 swap(nums, left, right);//right和left交换 left++; } right++; /** 第一次[0, 1, 0, 3, 12] 第二次[1, 0, 0, 3, 12] 第三次[1, 0, 0, 3, 12] 第四次[1, 3, 0, 0, 12] 第五次[1, 3, 12, 0, 0] */ } } public void swap(int[] nums, int left, int right) { int temp = nums[left]; nums[left] = nums[right]; nums[right] = temp; } }