题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
思路
1、遍历数组,定义一个标记,指向0
2、第一次遍历如果遇到的一直不是0,则标记下移
3、直到遇到0,temp标记这个0的位置 继续往下遍历,遇到数字了,就要和之前的0交换位置
**注意**:第一次遍历如果遇到的一直不是0,则标记一直下移
两个非零数字之间相隔好多个0:交换数字,标记下移,仍然是指向0
两个非0数字间隔一个0,交换数字后,标记下移,也让仍然是指向0
就是说,只要遍历的时候当前数字不是0,标记就要下移
代码
var moveZeroes = function(nums) {
let temp=0
for(let i=0;i<nums.length;i++){
if(nums[i]!=0){
if(nums[temp]==0){
nums[temp]=nums[i]
nums[i]=0
}
temp++
}
}
return nums
};