본문 바로가기
JAVA/Coding Test Study

[Easy] LeetCode - no.27 Remove Element : Java

by ♡˖GYURI˖♡ 2024. 10. 13.
728x90

https://leetcode.com/problems/remove-element/description/?envType=study-plan-v2&envId=top-interview-150

 

 

문제

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;
    }
}