记录一下LeetCode的题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/move-zeroes
以下是Java代码:
class Solution {
public void moveZeroes(int[] nums) {
int i,j = 0;
for(i = 0;i<nums.length;i++){
if(nums[i]!=0){
nums[j++] = nums[i];
}
}
while(j<nums.length){
nums[j++] = 0;
}
}
}
以下引用自 LeetCode用户 飞鸟 的评论,该大佬的空间
力扣
https://leetcode-cn.com/u/lzxjack/
- 定义快慢双指针
- 快指针遍历nums,遇到不为零的数,将快指针对应的数给慢指针对应的数
- 慢指针再右移一位
- 快指针遍历一遍之后,所有不为0的数都已经到了数组的最前面
- 从慢指针开始,往后的数都赋值为0即可