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:
- You must do this in-place without making a copy of the array.
- Minimize the total number of operations.
MyAnswer :
class Solution {
public:
void moveZeroes(vector<int>& nums) {
vector<int>::const_iterator iOldVector = nums.begin() ;
vector<int>::iterator iNewVector = nums.begin() ;
for(;iOldVector != nums.end(); iOldVector++){
if( *iOldVector != 0 ){
*iNewVector = *iOldVector ;
iNewVector++ ;}
}
for(;iNewVector != nums.end(); iNewVector++)
*iNewVector = 0 ;
};
};
Runtime:
20 ms
默默开始学习数据结构和算法,从最简单的开始做。。。。