283. Move Zeroes

283. Move Zeroes_第1张图片

Javascript

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function(nums) {
    var count=0;
    for(var i=0;i

C++和Java的方法没想出来

最优解

思路和我的思路类似,但是它这里条件判断选择的更好,用不等于0做判断,那么可以把后面的数移到前面去,最后再把0补上即可。我想的是记录0的个数,而它记录了非0个数,和数组长度一比也可以算出0的个数,而且这个变量还可以用于数组移位,很巧妙。

C++

class Solution {
public:
    void moveZeroes(vector& nums) {
        int count=0;
        for(int i=0;i

Java

public class Solution {
    public void moveZeroes(int[] nums) {
    if (nums == null || nums.length == 0) return;        

    int insertPos = 0;
    for (int num: nums) {
        if (num != 0) nums[insertPos++] = num;
    }        

    while (insertPos < nums.length) {
        nums[insertPos++] = 0;
    }
    }
}

你可能感兴趣的:(283. Move Zeroes)