전제
배열 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
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부터 순서대로 채워준다.