美文网首页
283. Move Zeroes

283. Move Zeroes

作者: hyhchaos | 来源:发表于2016-11-20 19:22 被阅读8次

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<nums.length;i++)
    {
        if(nums[i]===0)
        {
        nums.splice(i,1);
        count++;
        i--;
        }
    }
    for(var j=0;j<count;j++)
    {
        nums.push(0);
    }
};

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

最优解

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

C++

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int count=0;
        for(int i=0;i<nums.size();i++)
        {
            if(nums[i]!=0) nums[count++]=nums[i];
        }
        for(;count<nums.size();count++)
        {
            nums[count]=0;
        }
    }
};

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

      本文链接:https://www.haomeiwen.com/subject/yrespttx.html