移动零
给定一个数组 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
};
以自己现在的努力程度,还没有资格和别人拼天赋

浙公网安备 33010602011771号