一、移动零
1.双指针
我们可以设定两个指针i和j,其中i用来遍历整个数组,j用来遍历存放不为零的数的位置,当nums[i]不等于零时,就让nums[i]和nums[j]进行交换,然后j++,当我们遍历完整个数组之后就完成了操作,具体代码如下:
class Solution {
public void moveZeroes(int[] nums) {
int j = 0;
for(int i = 0; i < nums.length; i++) {
if(nums[i] != 0) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
j++;
}
}
}
}
复杂度分析
- 时间复杂度:O(n)。
- 空间复杂度:O(1)。