数组--Leetcode283

Posted hangtutu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组--Leetcode283相关的知识,希望对你有一定的参考价值。

题目

Given an array nums, write a function to move all 0‘s to the end of it while maintaining the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0]

给定一个数组,写一个函数,将数组中的所有0挪到数组的末尾,而维持其他所有非0元素的相对位置.举例 input:[0,1,0,3,12] output:[1,3,12,0,0]

代码

 方法一:

   public static void moveZeroes(int[] nums) {
        int[] nonZeroElements = new int[nums.length];
        int count = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                nonZeroElements[count] = nums[i];
                count++;
            }
        }
        for (int i = count; i < nums.length; i++) {
            nonZeroElements[count] = 0;
            count++;
        }
        for (int i = 0; i < nums.length; i++) {
            nums[i] = nonZeroElements[i];
        }
    }

  

方法二:

   public static void moveZeroes(int[] nums) {
        int size = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] > 0) {
                nums[size] = nums[i];
                size++;
            }
        }
        for (int i = size; i < nums.length; i++) {
            nums[i] = 0;
        }
    }  

 

方法三:

   public static void moveZeroes3(int[] nums) {
        int k = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] > 0) {
                if (i != k) {   //如果数组中没有0,就不需要交换
                    swap(nums, i, k++);
                } else {
                    k++;
                }
            }
        }
    }

    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

  

 

以上是关于数组--Leetcode283的主要内容,如果未能解决你的问题,请参考以下文章

前端与算法 leetcode 283. 移动零

Leetcode 数组:283 removezeros 移动零(python)

数组--Leetcode283

LeedCode 283. 移动零

LeetCode 283. Move Zeroes

LeetCode283.移动零