알고리즘
[LeetCode] Remove Element - Javascript
호IT
2023. 8. 23. 18:24
Remove Element
[Input 배열의 요소 제거]
제약 조건
0 <= nums.length <= 100
0 <= nums[i] <= 50
0 <= val <= 100
Example
ex1) Input: nums = [3,2,2,3], val = 3
Output: 2, nums = [2,2,_,_]
ex2) Input: nums = [0,1,2,2,3,0,4,2], val = 2
Output: 5, nums = [0,1,4,0,3,_,_,_]
문제 접근 방식
nums 배열의 인덱스 값 중, val을 통해 입력되는 값을 제거하면 되니
nums 배열을 순회하며 val의 값이 존재하면 해당 배열을 삭제하고
남은 배열의 길이를 return 하면 된다고 생각했다.
전체코드
/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function(nums, val) {
for(let i = 0; i < nums.length; i++){
if(nums[i] === val){
nums.splice(i,1);
i--;
}
}
return nums.length;
};
이전 문제(Merge Sorted Array)에 비해 쉽게 풀 수 있었고, 처음에 생각한 접근 방식으로 한 번에 solve를 할 수 있었다.
다른 solve 코드
function removeElement(nums, val) {
let count = 0;
for (let i = 0; i < nums.length; i++) {
if (nums[i] !== val) {
nums[count++] = nums[i];
}
}
return count;
}
위의 방법으로 splice를 사용 안 하고도 풀이가 가능하다.
count 변수를 생성해 nums 배열을 순회하며 val의 값과 일치하지 않는다면 해당 값을 넣어서 풀이가 가능하다.