移动零
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
要求在不使用新数组的情况下将所有零移动到末尾。可以使用双指针,当快指针遍历到非零的数的时候,交换快指针和慢指针所指的数。这样,当快指针遍历完数组之后,所有的非零数都被移动到了数组的前面;则对应的,所有的零都被移动到了数组的最后面。由于快指针是顺序遍历数组的,所以非零元素的顺序也不变。
var moveZeroes = function(nums) {
let left = 0
for (let right = 0; right < nums.length; right++) {
if (nums[right] !== 0) {
[nums[left], nums[right]] = [nums[right], nums[left]]
left++
}
}
return nums
};