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 | 
