/** * @brief 给定一个数组nums,将所有的0移动到数组的末尾,同时保留非0元素的相对顺序; * @param nums */ void moveZeros(vector<int>& nums){ int i = 0,poz = 0; for(int i = 0; i < nums.size() && poz < nums.size();i++){ while(poz < nums.size() && nums[poz] == 0) poz++; if(poz < nums.size()) nums[i]=nums[poz]; else i--; poz++; } for(;i<nums.size();i++){ nums[i] = 0; } } void moveZeros(vector<int> &nums) { int p1 = 0,p2=0; for(;p1<nums.size() && nums[p1]!=0;p1++); for(p2=p1;p2<nums.size();p2++){ if(nums[p2] == 0) continue; nums[p1++] = nums[p2]; } //set zero for rest items while(p1<nums.size()){ nums[p1++] = 0; } }