539. 移动零

作者: 和蔼的zhxing | 来源:发表于2017-12-05 21:42 被阅读4次

    给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序
    样例
    给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].

    冒泡

    把0都冒到后面去,这个没写,时间肯定是超的,也算一个思路。

    双指针

    一根指针遍历找不是0的元素,一根指针指向要替换位置,用不是0的元素把对应的位置一一替换,然后在后边补零。

     void moveZeroes(vector<int>& nums) {
            size_t i=0;
            for(size_t j=0;j<nums.size();j++)
            {
                if(nums[j]!=0)
                {
                    nums[i]=nums[j];
                    i++;
                }
            }
            for(;i<nums.size();i++)
            {
                nums[i]=0;
            }
            // write your code here
        }
    

    相关文章

      网友评论

        本文标题:539. 移动零

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