题目链接
移动零
题目描述
注意点
- 将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序
- 必须在不复制数组的情况下原地对数组进行操作
解答思路
- 采用双指针的思路,左指针指向已移动零的数组的尾部,右指针指向为移动零的数组的头部,当右指针指向了一个非零元素,则需要将左右指针对应的元素进行交换,将0移动到后方
代码
class Solution {public void moveZeroes(int[] nums) {int leftZero = 0;for (int i = 0; i < nums.length; i++) {if (nums[i] != 0) {swap(nums, leftZero, i);leftZero++;}}}public void swap(int[] nums, int left, int right) {int tmp = nums[left];nums[left] = nums[right];nums[right] = tmp;}
}
关键点
- 双指针的思想