JAVA/Coding Test Study
[Easy] LeetCode - no.27 Remove Element : Java
♡˖GYURI˖♡
2024. 10. 13. 04:14
728x90
문제
nums라는 int 배열에서 val에 해당하는 값을 삭제한 후, 남은 값들의 개수를 return할 것
이 때 nums의 0번째 인덱스부터 val을 제외한 숫자들이 채워져 있어야 함 (순서 상관X)
풀이
import java.util.*;
class Solution {
public int removeElement(int[] nums, int val) {
List<Integer> list = new ArrayList<>();
for (int n : nums) {
if (n != val) {
list.add(n);
}
}
for (int i = 0; i < list.size(); i++) {
nums[i] = list.get(i);
}
return list.size();
}
}
- ArrayList 사용
- ArrayList에 n != val인 값들을 add한 후 nums로 다시 옮김
- list.size()를 리턴
- 시간복잡도 : O(N)
더 좋은 방법에 대한 고민
- 따로 ArrayList를 사용하지 않고, int 배열 내에서 해결
class Solution {
public int removeElement(int[] nums, int val) {
int count = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] != val) {
nums[count] = nums[i];
count++;
}
}
return count;
}
}