https://leetcode.com/problems/move-zeroes/
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.
다른 것을 이용하지 않고 주어진 배열만으로 해결하라고해서 난감했던 문제다. 풀이 방법은 0이 아닌 수의 인덱스의 위치를 기억하는 변수를 만들고 0이 아닌 수가 나오면 맨 앞에서부터 차례대로 그수로 바꿔준다. 0의 위치를 기록한 인덱스가 끝 인덱스에 도달할 때 까지 0을 넣어주면 된다.
class Solution {
public void moveZeroes(int[] nums) {
int idx = 0;
for (int i=0; i<nums.length; i++) {
if (nums[i] != 0) {
nums[idx] = nums[i];
idx++;
}
}
while (idx < nums.length) {
nums[idx] = 0;
idx++;
}
}
}