283.移动零

时游小于 1 分钟LeetCode

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

上次编辑于:
贡献者: 15327360835
Loading...