lintcode

539. 移动零

2017-12-05  本文已影响4人  和蔼的zhxing

给一个数组 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
    }
上一篇下一篇

猜你喜欢

热点阅读