leetcode283-移动零
leetcode 283
思路
本题是通过把数组中所有不为0的数字前置,实现把所有的0后置的效果
- 双指针法
slow 充当指针,记录当前零应该被移到的位置。而 i 用来遍历整个数组,检查每个元素。如果当前元素不为零,就将其与 slow 位置上的零进行交换 - 交换操作
每当找到一个非零元素时,将其与当前零的位置交换。这样,slow 指针逐步向右移动,确保所有非零元素被推到前面,而零元素会被推到末尾
实现
var moveZeroes = function (nums) {let slow = 0; // 指向0的位置,初始值为0项for(let i = 0;i < nums.length;i++){if(nums[i]!==0){const temp = nums[i];nums[i] = nums[slow];nums[slow] = temp;slow++}}return nums;
};