移动零

来源:互联网 发布:初中考试软件 编辑:程序博客网 时间:2024/05/18 21:39

给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序

注意事项

1.必须在原数组上操作
2.最小化操作数

样例

给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].


反着移动,将非0的数往前移动碰到i =0或遇到另一个非0数停止,变量一遍自然所有0跑到了后面


class Solution {public:    /**     * @param nums an integer array     * @return nothing, do this in-place     */    void moveZeroes(vector<int>& nums) {        // Write your code here        if (nums.empty())          return;        for(int i = 0; i < nums.size(); i++)        {            if(nums[i] != 0)            {                int j = i;                while(j-1 >= 0 && nums[j-1] == 0)                {                    swap(nums[j-1], nums[j]);                    j--;                }            }        }    }        void swap(int &a, int &b)    {        int temp = a;        a = b;        b = temp;    }};


0 0
原创粉丝点击