码迷,mamicode.com
首页 > 移动开发 > 详细

leetcode283. 移动零

时间:2020-05-25 12:33:04      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:增加   带来   size_type   src   必须   个数   size_t   数组   style   

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:

必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。

技术图片

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        vector<int>::size_type nonZero = 0;
        vector<int>::size_type next = 0;
        while (next < nums.size()) {
            if (nums[next] != 0) {
                // 使用 std::swap() 会带来 8ms 的性能损失
                // swap(nums[next], nums[nonZero]);
                auto tmp = nums[next];
                nums[next] = nums[nonZero];
                nums[nonZero] = tmp;
                //用nums[next]^=nums[nonZero]^=nums[next]^=nums[nonZero]; WA
                //用nonZero++;next++;会增加8ms左右
                ++nonZero;
            }
            //next++;
            ++next;    
        }
    }
};

 

leetcode283. 移动零

标签:增加   带来   size_type   src   必须   个数   size_t   数组   style   

原文地址:https://www.cnblogs.com/xxxsans/p/12956018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!