题目:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
个人思路:
使用双指针算法,定义左右指针,左指针指明放的位置,它前面是无0的,右指针进行遍历,判断不为0的数,将其放到左指针的位置,最后只需要把左指针之后的全0就行
代码:
class Solution {
public void moveZeroes(int[] nums) {
int l=0;
int r=0;
for(r=0;r<nums.length;r++){
if(nums[r]!=0){
nums[l]=nums[r];
l++;
}
}
while(l<nums.length){
nums[l]=0;
l++;
}
}
}
相似题目:https://blog.csdn.net/QilanAllen/article/details/104477631