283.移动零
小于 1 分钟
283.移动零
/*
* @lc app=leetcode.cn id=283 lang=typescript
*
* [283] 移动零
*/
// @lc code=start
/**
Do not return anything, modify nums in-place instead.
*/
/* 内置函数 */
// function moveZeroes(nums: number[]): void {
// nums.sort((a: number, b: number) => (b ? 0 : -1));
// }
// function moveZeroes(nums: number[]): void {
// // 双指针解法
// let l = nums.length - 1;
// let r = nums.length - 1;
// while (l >= 0) {
// if (nums[l] == 0) {
// // 当左指针为0,将该指针右侧整体向左移动一格后往最后插入0
// let left = nums.splice(l + 1);
// nums.splice(l, 0, ...left);
// r = l;
// }
// l--;
// }
// }
/* 双指针 */
function moveZeroes(nums: number[]): void {
let l = 0,
r = 0;
for (r; r < nums.length; r++) {
if (nums[r] !== 0) {
// 不为0,则交换
if (l != r) {
[nums[l], nums[r]] = [nums[r], nums[l]];
}
l++;
}
}
}
moveZeroes([0,1,0,3,12]);
// @lc code=end
Loading...
