概述
目录
- 1.题目描述
- 难度:简单
- 示例
- 提示
- 2.题目解答
- 方法一:拷贝覆盖
- 方法二:双指针法
1.题目描述
难度:简单
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例
- 示例1
输入: nums = [0,1,0,3,12] 输出: [1,3,12,0,0]
- 示例2
输入: nums = [0] 输出: [0]
提示
·1 <= nums.length <= 10^4
·-2^31 <= nums[i] <= 2^31 - 1
2.题目解答
方法一:拷贝覆盖
解题思路
1.非零元素按顺序拷贝在数组前面。
2.后面的元素用0填充。
public class Solution {
public void moveZeroes(int[] nums) {
int ans = 0;
for (int num : nums) {
if (num != 0) {
nums[ans++] = num;
}
}
for (int i = ans; i < nums.length; i++) {
nums[i] = 0;
}
}
}
方法二:双指针法
解题思路
1.非零元素按顺序拷贝在数组前面。
2.后面的元素用0填充。
public class Solution {
public void moveZeroes(int[] nums) {
int slowIdx = 0;
for (int fastIdx = 0; fastIdx < nums.length; fastIdx++) {
if (nums[fastIdx] != 0) {
nums[slowIdx++] = nums[fastIdx];
}
}
for (int i = slowIdx; i < nums.length; i++) {
nums[i] = 0;
}
}
}
最后
以上就是斯文冥王星为你收集整理的0010【数组】简单LeetCode283.移动零的全部内容,希望文章能够帮你解决0010【数组】简单LeetCode283.移动零所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复