https://leetcode.com/problems/remove-element/?envType=study-plan-v2&envId=top-interview-150
배열에서 제시된 수와 같은 값을 가지는 원소를 제거하여 총 몇개의 원소가 남았는지를 구하는 문제입니다. 몇가지를 주의해야 합니다.
nums = {1, 2, 3, 3, 2, 1}, val = 2
라면 최종적으로nums = {1, _, 3, 3, _, 1}
이 아니라...nums = {1, 3, 3, 1, _, _}
이 되어야 함.val
와 탐색하는 원소가 다르면 입력을 한다.1은 val와 다르기 때문에 두가지 과정을 진행합니다.
이번에는 val와 같은 값이군요! 다음 과정을 진행합니다.
3은 val와 다른 값입니다. 그러므로 두 과정을 진행합니다.
3은 역시 val와 다른 값이기 때문에 두 과정을 진행하면 됩니다.
이번에는 같은 값이군요. 탐색 index만 +1 이동하고 입력 index는 이동하지 않습니다.
입력 index에 탐색한 값을 덮어 씌우면 됩니다.
탐색 index가 배열의 끝까지 도달했기 때문에 탐색을 종료합니다.
class Solution {
public int removeElement(int[] nums, int val) {
int inputIndex = 0;
int length = nums.length;
for (int searchIndex = 0; searchIndex < length; searchIndex++) {
if (nums[searchIndex] != val) { // 값이 다르면...
nums[inputIndex] = nums[searchIndex]; // 덮어 씌우기
inputIndex++; // 입력 index +1
}
}
return inputIndex;
}
}