
숫자 배열이 주어지면, 0을 제외한 수들의 상대적인 순서를 유지한 채로 모든 0을 배열의 끝으로 옮기는 문제이다
배열 하나만 사용해서 문제 풀이!
1. 0이 아닌 수들이 나왔을때 배열의 앞에서부터 채워 놓는다(마지막으로 채운 곳의 인덱스를 저장함)
2. 저장한 인덱스의 다음 인덱스부터 0을 채워놓는다.
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int len = nums.size();
int idx = 0;
for(int i = 0; i < len; i++){
if(nums[i] != 0){
nums[idx++] = nums[i];
}
}
for(int j= idx; j < len; j++){
nums[j] = 0;
}
}
};
이보다 더 좋은 풀이는 없는듯!