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;
}
}
'JAVA > Coding Test Study' 카테고리의 다른 글
[Easy] LeetCode - no.169 Majority Element : Java (0) | 2024.10.13 |
---|---|
[Easy] LeetCode - no.26 Remove Duplicates from Sorted Array : Java (0) | 2024.10.13 |
[Easy] LeetCode - no.88 Merge Sorted Array : Java (0) | 2024.10.13 |
[Lv.2] 프로그래머스 - 주식가격 : Java (3) | 2024.09.01 |
[Lv.0] 프로그래머스 - 평행 : Java (0) | 2024.06.21 |