LeetCode--初级算法--数组篇--第八题--移动零


GitHub地址


题目

  • 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例

  • 输入: [0,1,0,3,12]
  • 输出: [1,3,12,0,0]

说明

  • 必须在原数组上操作,不能拷贝额外的数组。
  • 尽量减少操作次数。

代码

这一题相对简单,一开始的思路就击败了99.7%的小伙伴,还是很开心的。虽然很简单,哈哈。我的思路是首先记录一下索引,将每一个不等于零的数,依次重新赋值到新的索引位置,将原来位置赋值为0,正好是同一索引位置不赋值。

public class MoveZeroes {

    public static void moveZeroes(int[] nums) {
        if (nums!=null && nums.length == 1)
            return;

        int index = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                nums[index] = nums[i];
                if(index != i)
                    nums[i] = 0;
                index++;
            }
        }
    }

    public static void main(String[] args) {
        int[] nums = {1, 0};
        moveZeroes(nums);
        for (int num : nums) {
            System.out.println(num);
        }
    }
}

你可能感兴趣的:(LeetCode,LeetCode)