지문은 링크에서 확인해주세요.
/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function(nums, val) {
while(nums.indexOf(val) > -1) {
const idx = nums.indexOf(val);
nums.splice(idx, 1);
}
return nums.length;
};
nums1의 요소를 in-place하게 제거하는 방법은 JS배열에서 제공하는 splice 메소드 사용이라고 직관적으로 떠올랐습니다.
해답의 전문은 링크를 확인해주세요.
function removeElement(nums, val) {
// Counter for keeping track of elements other than val
let count = 0;
// Loop through all the elements of the array
for (let i = 0; i < nums.length; i++) {
// If the element is not val
if (nums[i] !== val) {
nums[count++] = nums[i];
}
}
return count;
}
시간복잡도 측면에서 필자(O(n²)
)보다 나은 성능을 보여준 해답(O(n)
)입니다.