LeetCode-Java题解 283. Move Zeroes
题目地址:283. Move Zeroes
解题思路:毫无疑问,这道题依然使用双指针法,但是我一开始做还是没什么思路,只考虑到把非0的元素放置到数组左边,在看了一些大佬的题解后,发现这种方法最为巧妙。其根本思想就是参考快速排序的思想,以0为界限,将整个数组划分为两个区域,左边为非0元素,右边为0。i负责遍历整个数组,j负责标记加入的非零元素的位置。
class Solution {
public void moveZeroes(int[] nums) {
if (nums == null || nums.length == 0) {
return;
}
int j = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] != 0) {
int temp = nums[i];
nums[i] = nums[j];
nums[j++] = temp;
}
}
}
}

浙公网安备 33010602011771号