我是靠谱客的博主 斯文冥王星,最近开发中收集的这篇文章主要介绍0010【数组】简单LeetCode283.移动零,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 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.移动零所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部