题目:
个人思路分享:
依旧使用双指针
双指针法(快慢指针法): 通过一个快指针 i 和慢指针 j 在一个 for 循环下完成两个 for 循环的工作。
这里我使用比较简单的写法,比较好理解,一定会有更好的,仅供参考
使用一个for循环进行遍历,在找出非零项并记录下标,将并将其赋值,则nums[j]=nums[i],并使j++,也可以写成nums[j++]=nums[i]
完成非零项赋值后,再将零移动到后边,则是使用另一个for循环,将数组剩下部分一一赋值0
代码如下:
class Solution {
public void moveZeroes(int[] nums) {
int j = 0;
for(int i = 0;i <nums.length;i++) {
if(nums[i] != 0) {
nums[j] = nums[i];
j++;
}
}
for(;j < nums.length;j++) {
nums[j] = 0;
}
}
}