移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
function moveZero(arr = [0,1,3,5,0,3,0,6,8]){ for(let i = arr.length -1;i > -1;i--){ let item = arr[i] if(item === 0){ arr = arr.concat(arr.splice(i,1)) } } return arr }
快慢指针
const moveZeroes = (nums = [0, 1, 0, 3, 12]) => { let slow = -1 for (let i = 0; i < nums.length; i++) { const v = nums[i] if (v === 0) { if (slow === -1) slow = i continue } if (slow > -1) { [nums[slow], nums[i]] = [nums[i], nums[slow]] slow++ } } return nums };
以自己现在的努力程度,还没有资格和别人拼天赋