移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
思路+代码+注释:
public void moveZeroes(int[] nums) {
/*
思路:定义两个指针l、r,l初始化为0,当l不为0时l++;当l为0时,r从l后开始向后扫描,寻找非零的数,然后和l交换,l++
直到l到达最后一个数
*/
int l=0;
int r;
int len=nums.length;
while (l<len-1)
{
if (nums[l]!=0)
{
l++;
}else {
r=l+1;
while (r<len)
{
if (nums[r]==0)
{
r++;
}else {
int tmp=nums[l];
nums[l]=nums[r];
nums[r]=tmp;
break;
}
}
l++;
}
}
}