본문 바로가기

카테고리 없음

[LeetCode] Remove Element | 난이도: Easy

반응형

문제

Given an integer array nums and an integer val, remove all occurrences of val in nums in-place. The relative order of the elements may be changed.

정수 배열 nums, 정수 타입의 변수 val가 있다.

배열 nums의 값 중에서 변수 val의 값과 일치하는 값을 뺀 배열의 길이를 구하시오.


예시

Input: nums = [3,2,2,3], val = 3
Output: 2, nums = [2,2,_,_]

답안

class Solution {
    public int removeElement(int[] nums, int val) {

        int result = 0;
        for(int i = 0; i<nums.length; i++){
            if(nums[i] != val){
                nums[result] = nums[i];
                result++;
            }
        }
        return result;

    }
}

배열에 있는 값과 변수의 값이 일치하면 넘어가고, 일치하지 않을 시 앞의 값을 뒤의 값으로 밀어버린다.

 

nums = [3,2,2,3], val = 3 일 경우의 예를 들어보자.

 

int i = 0일 경우 nums[0]의 값은 0 이므로 변수 val의 값과 동일하다. => i++

 

int i = 1일 경우 nums[1]의 값은 2 이므로 변수 val의 값과 다르다. 조건식 수행. => nums[0] = nums[1] / result++

result = 1

 

int i = 2일 경우 nums[2]의 값은 2 이므로 변수 val의 값과 다르다. 조건식 수행. => nums[1] = nums[2] / result++

result = 2

 

int i = 3일 경우 nums[3]의 값은 3이므로 변수 val의 값과 동일하다.

nums 배열의 길이는 4이므로 for문을 종료한다.

 

result 값을 리턴한다.

nums 배열에서 변수 val의 값과 동일한 값을 제거한 배열의 길이값이 리턴된다.

반응형