题目链接:283. 移动零 – 力扣(LeetCode)
- 核心逻辑:设置两个指针变量 一个快一个慢,快的遍历整个数组,遇到非零数后将非0数与慢指针交换位置,遇到0跳过,fast循环一轮后将慢指针后面的数都置为0 这样0就被移动到数组最后,非零数 也按相对位置排序了
- 代码实现 class Solution {
public void moveZeroes(int[] nums) {
int slow=0;
for(int fast=0;fast<nums.length;fast++){
if(nums[fast]!=0){
nums[slow]=nums[fast];
slow++;
}
}
while(slow<nums.length){
nums[slow]=0;
slow++;
}
}
} - 时间复杂度:O(n),n是数组元素个数;快慢指针都遍历了数组,原本应该是2n,但是常数忽略不计。
- 空间复杂度:O(1),没有开辟新容器存储,是在原来的数组上进行修改。



