Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements.
Note that you must do this in-place without making a copy of the array.
정수형 배열 nums가 주어질 때, 모든 0을 끝으로 옮겨라. 단 0이 아닌 원소의 순서를 그대로 유지해야 한다.
- 배열을 복사하지 않고 주어진 배열 위에서 실행해야 한다.
배열을 탐색하면서 0인 원소를 제거하는 동시에 갯수를 센다. 모든 원소 탐색이 끝나면 갯수만큼의 0을 삽입한다.
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int cnt=0;
for(auto itr=nums.begin(); itr<nums.end(); itr++){
if(*itr == 0){
nums.erase(itr,itr+1);
itr--;
cnt++;
}
}
while(cnt--) nums.push_back(0);
}
};
partition/stable_partition 함수 사용법 공부하기.