Remove Element

유길상·2022년 6월 8일
0

자료구조 - 리스트

목록 보기
7/10

문제

전제
배열 nums와 정수 val이 주어졌을때 val의 값을 nums안에서 다 지운다.
요소의 순서는 변경 될 수 있다.
val을 제거한 모든 요소들의 결과를 nums의 첫 번째부터 나열한다.
결과적으로 그 외의 요소들은 무엇이 들어있든 상관없다.

심사 코드는 아래와 같다.

int[] nums = [...]; // Input array
int val = ...; // Value to remove
int[] expectedNums = [...]; // The expected answer with correct length.
                            // It is sorted with no values equaling val.

int k = removeElement(nums, val); // Calls your implementation

assert k == expectedNums.length;
sort(nums, 0, k); // Sort the first k elements of nums
for (int i = 0; i < actualLength; i++) {
    assert nums[i] == expectedNums[i];
}

모든 로직이 통과되면 성공이다.

예제1

입력: nums = [3,2,2,3], val = 3
출력: 2, nums = [2,2,_,_]
설명 : 당신의 함수는 k = 2와 함께 nums의 0,1 번째 요소가 2여야합니다.
그 뒤의 요소들(_,_)은 무엇이 들어있든 문제없습니다.

예제2

입력: nums = [0,1,2,2,3,0,4,2], val = 2
출력: 5, nums = [0,1,4,0,3,_,_,_]
설명 : 당신의 함수는 k = 5와 함께 nums의 0부터 4의 요소들에 0,0,1,3,4가 포함되어 있어야합니다.
그 뒤의 요소들(_,_,_)은 무엇이 존재하든 문제없습니다.

제약 조건

0 <= nums.length <= 100
0 <= nums[i] <= 50
0 <= val <= 100


Solution

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

nums[i]가 val값이 아니면 0부터 순서대로 채워준다.

0개의 댓글