LintCode:移动零

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

 注意事项

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

样例

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

思路:将非0的数依次往最左边放,用一个变量pos1记住最左边已经放了多少个非零数.

class Solution {
public:
    /**
     * @param nums an integer array
     * @return nothing, do this in-place
     */
    void moveZeroes(vector& nums) {
        // Write your code here
        int pos1 = 0;
        int n = nums.size();
        for(int i=0; i         {
            if(nums[i] != 0)
            {
              if(i != pos1)
                 nums[pos1] = nums[i];
              pos1++;
            }
        }
        
        for(int i=pos1; i              nums[i] = 0;
    }
};

你可能感兴趣的:(lintcode,算法,面试)