반응형
1. 문제
- 배열 nums와 값 val이 주어질 때, val와 일치하지 않는 요소들을 nums 배열 앞에 나열한 뒤, 길이를 반환하라.
- val와 일치하지 않는 요소들을 앞에 나열 시킬 때, 순서는 상관없고 이후에 어떤 요소가 오든 상관없다.
2. 해결
function removeElement(nums: number[], val: number): number {
let index = 0;
let end_index = nums.length -1;
while (index <= end_index) {
while(nums[end_index] === val && end_index > index) end_index--;
if(nums[index] === val) {
nums[index] = nums[end_index];
nums[end_index] = val
end_index--;
}
index++;
}
return end_index+1;
};
- 마찬가지로 주어진 배열을 수정해야 하고, 효율적인 탐색을 위해 투포인터를 사용해보자.
- index는 0번 인덱스부터, end_index는 배열의 마지막 요소부터 시작해서 만날 때 까지 반복한다.
- 현재 index 값이 val과 동일하면, end_index의 값을 가져와 꽂는다. 이 때, end_index의 요소가 val인 경우도 있을 수 있으니까 걸러주는 작업을 통해 end_index는 먼저 조정한다.