移动零

Bernie


Bernie
283. 移动零
思路:
1.快慢指针,
2.定义一个慢指针 slow,一个快指针 fast,当 slow < fast 且 fast < nums.length 时,判断 nums[slow] 是否为 0,如果不为 0,则 slow++,如果为 0 且 nums[fast] 不为 0,则将 nums[slow] 与 nums[fast] 交换,然后 slow++,fast++,如果 nums[fast] 为 0,则 fast++,最后返回 nums 即可。
typescript 解法
/**
Do not return anything, modify nums in-place instead.
*/
function moveZeroes(nums: number[]): void {
let slow = 0;
let fast = 1;
while (slow < fast && fast < nums.length) {
if (nums[slow] != 0) {
slow++;
} else if (nums[fast] != 0 && nums[slow] == 0) {
const temp = nums[fast];
nums[fast] = nums[slow];
nums[slow] = temp;
slow++;
}
fast++;
}
}
go 解法
func moveZeroes(nums []int) {
slow := 0
fast := 1
for slow < fast && fast < len(nums) {
if nums[fast] != 0 && nums[slow] == 0 {
nums[slow], nums[fast] = nums[fast], nums[slow]
slow ++
} else if nums[slow] != 0 {
slow ++
}
fast ++
}
}