题目:移动零
一、解题思路
这道题我们可以利用双指针的思路,
设置left,right两个指针
(注意:双指针在数组的刷题中非常常见,务必要掌握!)
我们给两个指针分配任务。
right指针是为了找到数组中非零的数字,left指针是为了在该下标与right所在的下标中交换。
每一次交换都是将非零数字交换到右边,将0交换到左边。
时间复杂度:O{n}
空间复杂度:O{1}
二、实现代码
class Solution {
public void moveZeroes(int[] nums) {
int n=nums.length;
int temp;
int i=0,j=0;
while(i<n){
if(nums[i]!=0){
temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
j++;
}
i++;
}
}
}