1 题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
链接:https://leetcode-cn.com/problems/move-zeroes
2 思路
这道题我用双指针的方法,p1指针遍历整个数组,p2指针只记录不是0的数,并将其赋值给p1指针
3代码
/**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var moveZeroes = function(nums) {
let p1 = p2 = 0;
let maxIndex = nums.length - 1;
while(p1 <= maxIndex) {
if (nums[p2] === 0 && p2 <= maxIndex) {
p2++;
continue;
}
nums[p1] = p2 > maxIndex ? 0 : nums[p2];
p1++;
p2++;
}
};
本文介绍了一种使用双指针技巧解决LeetCode上的移动零问题的算法。该算法能够在原地操作,避免了额外数组的使用,通过p1和p2两个指针,p1用于遍历整个数组,p2用于记录并移动非零元素,从而实现零元素的归位,同时保持了非零元素的原始顺序。
3055

被折叠的 条评论
为什么被折叠?



