https://leetcode-cn.com/problems/move-zeroes/
点击查看【bilibili】
题目
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
-
示例
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
解答
相对顺序就是指,只考虑整体中的几个元素,它们的先后顺序,而不管它们在整体中的顺序。
创建两个指针:
i指针表示当前数
j指针表示应该在哪个位置放个非零数
遍历数组,i++,
如果当前数是非零数,j位置放这个非零数,j++
否则i++,j什么都不做
当i遍历完以后,从j当前的位置,到数组末尾,所有数都为0答案
var moveZeroes = function(nums) { let j=0; for(let i=0;i<nums.length;i++) { if(nums[i] !==0) { nums[j] = nums[i] j++ } } for(let i=j;i<nums.length;i++) { nums[i] = 0 } return nums };