283. Move Zeroes

来源:互联网 发布:驾驶员网络培训 编辑:程序博客网 时间:2024/06/08 09:07

Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].

Note:

  1. You must do this in-place without making a copy of the array.
  2. Minimize the total number of operations.

翻译:给定一个数组nums,写一个函数将所有的0移动到最后,同时保持非零元素的相对顺序。

例如,给定nums=[0,1,0,3,12],调用函数以后,nums变成[1,3,12,0,0]

class Solution{public:void moreZeros(vector<int>& nums){int n=nums.size();int count=0;int num=0;for(int i=0;i<n;i++){if(nums[i]==0)num++;else{nums[i-num]=nums[i];count++;}}for(int i=count;i<n;i++)nums[i]=0;}};