본문 바로가기
🧩 Algorithm

LeetCode : 27. Remove Element

by iirin 2023. 8. 25.

문제 링크

 

Remove Element - LeetCode

Can you solve this real interview question? Remove Element - Given an integer array nums and an integer val, remove all occurrences of val in nums in-place [https://en.wikipedia.org/wiki/In-place_algorithm]. The order of the elements may be changed. Then r

leetcode.com

문제 먼저 읽기

  • nums 정수 배열과 val 정수 1개가 주어진다.
  • val과 같은 수를 nums에서 제거한다.
  • 제거된 정수 외의 다른 수만 남긴 결과를 nums 배열에 저장한다.
  • 남은 수의 개수 k를 반환한다.
Input: nums = [3,2,2,3], val = 3
Output: 2, nums = [2,2,_,_]
  • k개의 수 뒤에는 뭐가 들어가든 상관없다.

 

어떻게 풀까?

생각

  • pointer를 이용해서 풀면 시간복잡도 O(n) 으로 풀 수 있을 것 같다.

수도코드

class Solution {
    public int removeElement(int[] nums, int val) {
        int k = 0;
                int curl = 0;

                for (int pointer=0; pointer<nums.length; pointer++) { // nums배열을 탐색한다.
                    if (nums[pointer]!=val) { // 만약 같지 않다면
                        nums[curl++] = nums[pointer];
                        k++
                    }
                }
            return k;
    }
}

 

결과

다른 풀이 방식과 문제 회고

class Solution {
    public int removeElement(int[] nums, int val) {
        int elem=0;
        for(int i=0; i<nums.length; i++){
            if(nums[i]!= val){
                nums[elem]=nums[i];
                elem++;
            }
        }
        return elem;

    }
}
  • 내 코드에서 curlk 를 별도로 생각할 필요가 없었다..!
  • 그 외 전체적인 구현 로직은 비슷했다.
  • 이전 LeatCode : 88. Merge Sorted Array 풀이 경험이 도움이 되었다.